Files
BYW-VoiceHub/server/utils/initial-password-policy.ts
T

34 lines
865 B
TypeScript

interface InitialPasswordUserState {
requirePasswordChange?: boolean | null
}
interface StoredPasswordState {
password?: string | null
passwordChangedAt?: Date | string | null
}
export interface PasswordSetupState {
hasSetPassword: boolean
needsInitialPasswordSetup: boolean
}
export function getPasswordSetupState(
storedPassword: StoredPasswordState,
requirePasswordChange: boolean
): PasswordSetupState {
const hasSetPassword = !!storedPassword.password
return {
hasSetPassword,
needsInitialPasswordSetup:
!storedPassword.passwordChangedAt && (requirePasswordChange || !hasSetPassword)
}
}
export function canSetInitialPassword(
user: InitialPasswordUserState,
storedPassword: StoredPasswordState
): boolean {
return getPasswordSetupState(storedPassword, !!user.requirePasswordChange)
.needsInitialPasswordSetup
}