// ============================================================================ // Admin Data Types // ============================================================================ import type { TAuthProviderStatus, TAuthProviderType } from './auth.ts'; export interface IOAuthConfig { clientId: string; clientSecretEncrypted: string; issuer: string; authorizationUrl?: string; tokenUrl?: string; userInfoUrl?: string; scopes: string[]; callbackUrl: string; } export interface ILdapConfig { serverUrl: string; bindDn: string; bindPasswordEncrypted: string; baseDn: string; userSearchFilter: string; tlsEnabled: boolean; tlsCaCert?: string; } export interface IAttributeMapping { email: string; username: string; displayName: string; avatarUrl?: string; groups?: string; } export interface IProvisioningSettings { jitEnabled: boolean; autoLinkByEmail: boolean; allowedEmailDomains?: string[]; } export interface IAuthProvider { id: string; name: string; displayName: string; type: TAuthProviderType; status: TAuthProviderStatus; priority: number; oauthConfig?: IOAuthConfig; ldapConfig?: ILdapConfig; attributeMapping: IAttributeMapping; provisioning: IProvisioningSettings; createdAt: string; updatedAt: string; createdById: string; lastTestedAt?: string; lastTestResult?: 'success' | 'failure'; lastTestError?: string; } export interface IPlatformAuthSettings { localAuthEnabled: boolean; allowUserRegistration: boolean; sessionDurationMinutes: number; defaultProviderId?: string; } export interface IPlatformSettings { id: string; auth: IPlatformAuthSettings; updatedAt: string; updatedById?: string; } export interface IConnectionTestResult { success: boolean; latencyMs: number; serverInfo?: Record; error?: string; }