Files
speckle-server/packages/frontend-2/lib/auth/helpers/validation.ts
T
2025-02-26 10:55:02 +01:00

31 lines
1.0 KiB
TypeScript

import { isStringOfLength, stringContains } from '~~/lib/common/helpers/validation'
import { blockedDomains } from '@speckle/shared'
export const passwordLongEnough = isStringOfLength({ minLength: 8 })
export const passwordHasAtLeastOneNumber = stringContains({
match: /\d/,
message: 'Must have at least one number'
})
export const passwordHasAtLeastOneLowercaseLetter = stringContains({
match: /[a-z]/,
message: 'Must have at least one lowercase letter'
})
export const passwordHasAtLeastOneUppercaseLetter = stringContains({
match: /[A-Z]/,
message: 'Must have at least one uppercase letter'
})
export const passwordRules = [
passwordLongEnough,
passwordHasAtLeastOneNumber,
passwordHasAtLeastOneLowercaseLetter,
passwordHasAtLeastOneUppercaseLetter
]
export const doesNotContainBlockedDomain = (val: string) => {
const domain = val.split('@')[1]?.toLowerCase()
return domain && blockedDomains.includes(domain)
? 'Please use your work email instead of a personal email address'
: true
}