Files
webmailserver/lib/users.ts

40 lines
1019 B
TypeScript

/**
* lib/users.ts
* Manages panel users via PostgreSQL database.
*/
import { prisma } from "./prisma";
export interface AppUser {
id: string;
name: string | null;
email: string;
password: string;
role: string;
domains: string[];
telegramId?: string | null;
}
/** Load all users from database */
export async function getUsers(): Promise<AppUser[]> {
const users = await prisma.user.findMany();
return users as AppUser[];
}
/** Find user by email and validate password via database */
export async function authenticateUser(email: string, password: string): Promise<AppUser | null> {
const user = await prisma.user.findUnique({
where: { email: email.toLowerCase() },
});
if (!user) return null;
if (user.password !== password) return null;
return user as AppUser;
}
/** Check if a user has access to a specific domain */
export function canAccessDomain(userDomains: string[], domain: string): boolean {
return userDomains.includes("*") || userDomains.includes(domain);
}