Files
speckle-server/packages/server/modules/workspaces/services/domains.ts
T
Gergő Jedlicska 32919c89da gergo/web 1746 add resolver for workspace domain policy compliance per user (#2797)
* fix(users): verified should be a public limited user field

* feat(workspaceSecurity): update security tab copy

* feat(workspaces): add limited user domain policy compliance check
2024-08-29 11:11:08 +02:00

37 lines
1.2 KiB
TypeScript

import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations'
import { userEmailsCompliantWithWorkspaceDomains } from '@/modules/workspaces/domain/logic'
import { GetWorkspaceWithDomains } from '@/modules/workspaces/domain/operations'
import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace'
export const isUserWorkspaceDomainPolicyCompliantFactory =
({
getWorkspaceWithDomains,
findEmailsByUserId
}: {
getWorkspaceWithDomains: GetWorkspaceWithDomains
findEmailsByUserId: FindEmailsByUserId
}) =>
async ({
workspaceId,
userId
}: {
workspaceId: string
userId: string
}): Promise<boolean | null> => {
const workspace = await getWorkspaceWithDomains({
id: workspaceId
})
// maybe we should throw
if (!workspace) throw new WorkspaceNotFoundError()
// if workspace is not protected, the value is not true, its an empty response
if (!workspace.domainBasedMembershipProtectionEnabled) return null
const userEmails = await findEmailsByUserId({ userId })
return userEmailsCompliantWithWorkspaceDomains({
userEmails,
workspaceDomains: workspace.domains
})
}