import * as plugins from '../plugins.js'; import * as authInterfaces from '../data/auth.js'; export type TAdminLoginAuthSource = 'auto' | 'local' | 'idp.global'; export interface IAdminUserProjection { id: string; username: string; email?: string; name?: string; role: string; status?: 'active' | 'disabled'; authSources?: Array<'local' | 'idp.global'>; } // Admin Login export interface IReq_AdminLoginWithUsernameAndPassword extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_AdminLoginWithUsernameAndPassword > { method: 'adminLoginWithUsernameAndPassword'; request: { username: string; password: string; authSource?: TAdminLoginAuthSource; }; response: { identity?: authInterfaces.IIdentity; }; } // Admin bootstrap status export interface IReq_GetAdminBootstrapStatus extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetAdminBootstrapStatus > { method: 'getAdminBootstrapStatus'; request: {}; response: { dbEnabled: boolean; dbReady: boolean; hasPersistentAdmin: boolean; needsBootstrap: boolean; ephemeralAdminAvailable: boolean; idpGlobalConfigured: boolean; }; } // Create the first persisted admin account. Requires the bootstrap/ephemeral admin identity. export interface IReq_CreateInitialAdminUser extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateInitialAdminUser > { method: 'createInitialAdminUser'; request: { identity: authInterfaces.IIdentity; email: string; name?: string; password: string; enableIdpGlobalAuth?: boolean; }; response: { success: boolean; identity?: authInterfaces.IIdentity; user?: IAdminUserProjection; }; } // Admin Logout export interface IReq_AdminLogout extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_AdminLogout > { method: 'adminLogout'; request: { identity: authInterfaces.IIdentity; }; response: { success: boolean; }; } // Verify Identity export interface IReq_VerifyIdentity extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_VerifyIdentity > { method: 'verifyIdentity'; request: { identity: authInterfaces.IIdentity; }; response: { valid: boolean; identity?: authInterfaces.IIdentity; }; }