/** * 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 { 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 { 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); }