forked from admin/runners-calendar
feat: add registration and authentication
This commit is contained in:
@@ -11,6 +11,25 @@ function requireEnv(name: string): string {
|
||||
return value;
|
||||
}
|
||||
|
||||
function optionalEnv(name: string): string | null {
|
||||
const value = process.env[name]?.trim();
|
||||
return value ? value : null;
|
||||
}
|
||||
|
||||
function requireEnvUnlessMock(name: string, fallback: string): string {
|
||||
if (useMockDb) {
|
||||
return process.env[name]?.trim() || fallback;
|
||||
}
|
||||
return requireEnv(name);
|
||||
}
|
||||
|
||||
function parseBoolean(value: string | undefined, fallback: boolean): boolean {
|
||||
if (value == null || value.trim() === "") {
|
||||
return fallback;
|
||||
}
|
||||
return value === "1" || value.toLowerCase() === "true";
|
||||
}
|
||||
|
||||
const useMockDb =
|
||||
process.env.CALENDAR_RUN_MOCK_DB === "1" ||
|
||||
process.env.CALENDAR_RUN_MOCK_DB?.toLowerCase() === "true";
|
||||
@@ -35,6 +54,28 @@ export const config = {
|
||||
apiPort: parseInt(process.env.PORT || process.env.API_PORT || "3001", 10),
|
||||
/** Одно значение или несколько через запятую (прод: https://домен) */
|
||||
corsOrigin: parseCorsOrigins(),
|
||||
appBaseUrl: process.env.APP_BASE_URL?.trim() || "http://localhost:5173",
|
||||
session: {
|
||||
secret: requireEnvUnlessMock("SESSION_SECRET", "mock-session-secret-change-me"),
|
||||
cookieName:
|
||||
process.env.SESSION_COOKIE_NAME?.trim() ||
|
||||
(process.env.NODE_ENV === "production" ? "__Host-sid" : "sid"),
|
||||
secure: parseBoolean(process.env.SESSION_COOKIE_SECURE, process.env.NODE_ENV === "production"),
|
||||
ttlDays: parseInt(process.env.SESSION_TTL_DAYS || "30", 10),
|
||||
},
|
||||
smtp: {
|
||||
host: optionalEnv("SMTP_HOST"),
|
||||
port: parseInt(process.env.SMTP_PORT || "587", 10),
|
||||
secure: parseBoolean(process.env.SMTP_SECURE, false),
|
||||
user: optionalEnv("SMTP_USER"),
|
||||
password: optionalEnv("SMTP_PASSWORD"),
|
||||
from: process.env.SMTP_FROM?.trim() || "Calendar Run <no-reply@example.com>",
|
||||
},
|
||||
turnstile: {
|
||||
secretKey: process.env.TURNSTILE_SECRET_KEY?.trim() || (useMockDb ? "mock-turnstile-secret" : ""),
|
||||
bypassToken: process.env.TURNSTILE_BYPASS_TOKEN?.trim() || (useMockDb ? "mock-turnstile-token" : ""),
|
||||
},
|
||||
securityProfile: process.env.SECURITY_PROFILE?.trim() || process.env.NODE_ENV || "development",
|
||||
};
|
||||
|
||||
function parseCorsOrigins(): string | string[] {
|
||||
|
||||
Reference in New Issue
Block a user