feat: complete i18n support, telegram webhook, and security improvements

This commit is contained in:
AyrisAI
2026-05-14 13:46:17 +03:00
parent 4c9a07e3ef
commit cc65a2bd72
23 changed files with 798 additions and 205 deletions

View File

@@ -23,6 +23,7 @@ export interface AppUser {
password: string; // plain text — store hashed in prod or use secrets manager
role: "SUPER_ADMIN" | "DOMAIN_ADMIN";
domains: string[]; // ["*"] for super admin, ["domain.com"] for domain admins
telegramId?: string; // Optional Telegram ID for notifications
}
/** Load all users defined in environment variables */
@@ -36,6 +37,7 @@ export function getUsers(): AppUser[] {
const password = process.env[`USER_${i}_PASSWORD`];
const role = process.env[`USER_${i}_ROLE`] as AppUser["role"];
const domainsRaw = process.env[`USER_${i}_DOMAINS`] ?? "";
const telegramId = process.env[`USER_${i}_TELEGRAM_ID`];
if (!name || !email || !password) break;
@@ -46,6 +48,7 @@ export function getUsers(): AppUser[] {
password,
role: role ?? "DOMAIN_ADMIN",
domains: domainsRaw === "*" ? ["*"] : domainsRaw.split(",").map((d) => d.trim()).filter(Boolean),
telegramId,
});
i++;