@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
88 lines • 3.26 kB
TypeScript
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