37 lines
877 B
TypeScript
37 lines
877 B
TypeScript
export interface SessionUserLike {
|
|
id: string;
|
|
email: string;
|
|
emailVerified: boolean;
|
|
name?: string | null;
|
|
image?: string | null;
|
|
}
|
|
|
|
export function isConfiguredAdminEmail(
|
|
email: string | null | undefined,
|
|
adminEmail: string | null | undefined,
|
|
): boolean {
|
|
return Boolean(email && adminEmail && email === adminEmail);
|
|
}
|
|
|
|
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),
|
|
);
|
|
}
|