c54d15fd93
* feat: authz frontend foundation + reworked errors * lint fixes * test fix * fixed noCache() util
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { db } from '@/db/knex'
|
|
import { defineModuleLoaders } from '@/modules/loaders'
|
|
import {
|
|
getUserSsoSessionFactory,
|
|
getWorkspaceSsoProviderRecordFactory
|
|
} from '@/modules/workspaces/repositories/sso'
|
|
import {
|
|
getWorkspaceFactory,
|
|
getWorkspaceRoleForUserFactory
|
|
} from '@/modules/workspaces/repositories/workspaces'
|
|
import { Authz } from '@speckle/shared'
|
|
import { err, ok } from 'true-myth/result'
|
|
|
|
export default defineModuleLoaders(async () => {
|
|
const getWorkspace = getWorkspaceFactory({ db })
|
|
return {
|
|
getWorkspace: async ({ workspaceId }) => {
|
|
const workspace = await getWorkspace({ workspaceId })
|
|
if (!workspace) return err(new Authz.WorkspaceNotFoundError())
|
|
return ok(workspace)
|
|
},
|
|
getWorkspaceRole: async ({ userId, workspaceId }) => {
|
|
const role = await getWorkspaceRoleForUserFactory({ db })({
|
|
userId,
|
|
workspaceId
|
|
})
|
|
if (!role) return err(new Authz.WorkspaceRoleNotFoundError())
|
|
return ok(role.role)
|
|
},
|
|
getWorkspaceSsoSession: async ({ userId, workspaceId }) => {
|
|
const ssoSession = await getUserSsoSessionFactory({ db })({
|
|
userId,
|
|
workspaceId
|
|
})
|
|
if (!ssoSession) return err(new Authz.WorkspaceSsoSessionNotFoundError())
|
|
return ok(ssoSession)
|
|
},
|
|
getWorkspaceSsoProvider: async ({ workspaceId }) => {
|
|
const ssoProvider = await getWorkspaceSsoProviderRecordFactory({ db })({
|
|
workspaceId
|
|
})
|
|
if (!ssoProvider) return err(new Authz.WorkspaceSsoProviderNotFoundError())
|
|
return ok(ssoProvider)
|
|
}
|
|
}
|
|
})
|