32919c89da
* 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
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import { UserEmail } from '@/modules/core/domain/userEmails/types'
|
|
import { WorkspaceDomainsInvalidState } from '@/modules/workspaces/errors/workspace'
|
|
import { WorkspaceDomain } from '@/modules/workspacesCore/domain/types'
|
|
|
|
export const userEmailsCompliantWithWorkspaceDomains = ({
|
|
userEmails,
|
|
workspaceDomains
|
|
}: {
|
|
userEmails: UserEmail[]
|
|
workspaceDomains: WorkspaceDomain[]
|
|
}): boolean =>
|
|
anyEmailCompliantWithWorkspaceDomains({
|
|
emails: userEmails.filter((e) => e.verified).map((e) => e.email),
|
|
workspaceDomains
|
|
})
|
|
|
|
export const anyEmailCompliantWithWorkspaceDomains = ({
|
|
emails,
|
|
workspaceDomains
|
|
}: {
|
|
emails: string[]
|
|
workspaceDomains: WorkspaceDomain[]
|
|
}): boolean => {
|
|
const validWorkspaceDomains = workspaceDomains.filter((domain) => domain.verified)
|
|
|
|
// we must have min 1 domain to validate compliance
|
|
if (!validWorkspaceDomains.length) throw new WorkspaceDomainsInvalidState()
|
|
|
|
for (const email of emails) {
|
|
if (validWorkspaceDomains.some((domain) => email.endsWith(domain.domain)))
|
|
return true
|
|
}
|
|
return false
|
|
}
|