UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

88 lines 3.26 kB
import { AugurAPI } from '../client'; /** * Cross-site authentication utility * @description Streamlined utility for authenticating users across different Augur sites * using augur_info privileges */ /** * Parameters for cross-site authentication */ export interface CrossSiteAuthParams { /** Target site ID to authenticate against */ targetSiteId: string; /** Username or email */ username: string; /** User password */ password: string; /** JWT token with augur_info admin privileges */ augurInfoToken: string; } /** * Result of cross-site authentication */ export interface CrossSiteAuthResult { /** Whether authentication was successful */ success: boolean; /** User ID if authentication succeeded */ userId?: string; /** Username if authentication succeeded */ username?: string; /** Email if authentication succeeded */ email?: string; /** JWT token scoped to target site if authentication succeeded */ token?: string; /** Target site ID */ targetSiteId: string; /** Error message if authentication failed */ error?: string; /** API client configured for target site (only if authentication succeeded) */ targetSiteAPI?: AugurAPI; } /** * Authenticate a user against a target site using augur_info privileges * @description This utility function simplifies cross-site authentication by: * 1. Creating an augur_info API client with admin privileges * 2. Using verifyPassword with the target siteId in the request body * 3. Returning a ready-to-use API client for the target site on success * * @param params Cross-site authentication parameters * @returns Promise resolving to authentication result with optional target site API client * * @example * ```typescript * const result = await authenticateUserForSite({ * targetSiteId: 'tenant_site_1', * username: 'user@tenant.com', * password: 'userpassword', * augurInfoToken: 'admin-jwt-token' * }); * * if (result.success) { * // Use the pre-configured API client * const userData = await result.targetSiteAPI!.joomla.users.get(result.userId!); * console.log('User data:', userData); * } else { * console.error('Authentication failed:', result.error); * } * ``` */ export declare function authenticateUserForSite(params: CrossSiteAuthParams): Promise<CrossSiteAuthResult>; /** * Create a cross-site authentication function bound to specific augur_info credentials * @description Factory function for creating a reusable cross-site authenticator * * @param augurInfoToken JWT token with augur_info admin privileges * @returns Function that can authenticate users for any target site * * @example * ```typescript * // Create reusable authenticator * const crossSiteAuth = createCrossSiteAuthenticator('admin-jwt-token'); * * // Use it for multiple sites * const result1 = await crossSiteAuth('tenant_site_1', 'user1@tenant.com', 'pass1'); * const result2 = await crossSiteAuth('tenant_site_2', 'user2@tenant.com', 'pass2'); * ``` */ export declare function createCrossSiteAuthenticator(augurInfoToken: string): (targetSiteId: string, username: string, password: string) => Promise<CrossSiteAuthResult>; //# sourceMappingURL=cross-site-auth.d.ts.map