43 lines
1009 B
TypeScript
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),
|
|
);
|
|
}
|