UNPKG

svelte-guardian

Version:

Batteries included authentication for SvelteKit applications.

101 lines (100 loc) 3.06 kB
import type { User } from './user'; import type { LoggerConfig } from '../core/logger'; import type { DatabaseConfig } from './database'; import type { RateLimitingConfig } from '../features/rate-limiting'; import type { EmailProviderConfig } from '../email/types'; export interface ProviderConfig { enabled?: boolean; clientId?: string; clientSecret?: string; } export interface EmailVerificationOptions { method: 'otp' | 'link'; otpLength?: number; otpExpiration?: number; tokenExpiration?: number; enabled?: boolean; } export interface PasswordResetOptions { tokenExpiration?: number; } export interface TwoFactorAuthOptions { method: 'totp' | 'sms' | 'email'; allowBackupCodes?: boolean; backupCodeCount?: number; } export interface SecurityConfig { level?: 'strict' | 'moderate' | 'relaxed'; maxLoginAttempts?: number; lockoutDuration?: number; emailVerification?: EmailVerificationOptions; passwordReset?: PasswordResetOptions; twoFactorAuth?: TwoFactorAuthOptions; emailProvider?: EmailProviderConfig; rateLimiting: RateLimitingConfig; routeProtection?: { protectedRoutes?: { [route: string]: { allowedRoles?: string[]; authenticated?: boolean; redirectPath?: string; }; }; publicRoutes?: { [route: string]: { redirectPath?: string; }; }; redirectPath?: string; authenticatedRedirect?: string; roleKey?: string; }; passwordPolicy?: { minLength?: number; maxLength?: number; requireUppercase?: boolean | number; requireLowercase?: boolean | number; requireNumbers?: boolean | number; requireSpecialChars?: boolean | number; specialChars?: string; }; } export interface EventHandlers { onSignIn?: (user: User) => Promise<void>; onRegistration?: (user: User) => Promise<void>; onPasswordReset?: (user: User) => Promise<void>; onEmailVerification?: (user: User) => void; onTwoFactorSetup?: (user: User) => void; } export interface GuardianAuthConfig { database?: DatabaseConfig; providers: { google?: ProviderConfig; github?: ProviderConfig; credentials?: ProviderConfig & { passwordless?: boolean; additionalUserFields?: string[]; allowRegistration?: boolean; requireEmailVerification?: boolean; }; }; security: SecurityConfig; events?: EventHandlers; logging?: LoggerConfig; pages?: { signIn?: string; signOut?: string; error?: string; verifyRequest?: string; newUser?: string; }; advanced?: { sessionStrategy?: 'jwt' | 'database'; tokenEncryption?: boolean; rateLimiting?: { enabled: boolean; requestsPerMinute?: number; }; }; } export declare const DefaultGuardianAuthConfig: GuardianAuthConfig;