Files
buzz-sheet/lib/auth/authorization.ts
T
gunshiz 6a932baa98
CI / Verify (push) Successful in 54s
CI / Build immutable images and deploy (push) Has been skipped
feat : able to use mutil email
2026-08-29 08:18:21 +00:00

43 lines
1009 B
TypeScript

export interface SessionUserLike {
id: string;
email: string;
emailVerified: boolean;
name?: string | null;
image?: string | null;
}
export function isConfiguredAdminEmail(
email: string | null | undefined,
adminEmailConfig: string | null | undefined,
): boolean {
if (!email || !adminEmailConfig) return false;
return adminEmailConfig
.split(",")
.map((configuredEmail) => configuredEmail.trim())
.filter(Boolean)
.includes(email);
}
export function isAllowedAdminRegistration(
email: string | null | undefined,
authMethod: string,
adminEmail: string | null | undefined,
): boolean {
return (
authMethod === "email-password" &&
isConfiguredAdminEmail(email, adminEmail)
);
}
export function isAuthorizedAdmin(
user: SessionUserLike | null | undefined,
adminEmail: string | null | undefined,
): user is SessionUserLike {
return Boolean(
user &&
user.emailVerified === true &&
isConfiguredAdminEmail(user.email, adminEmail),
);
}