import { ManagementClientOptions, AuditLog } from './types'; import { ManagementTokenProvider } from './ManagementTokenProvider'; import { HttpClient } from '../common/HttpClient'; /** * @class StatisticsManagementClient 管理日志统计信息 * @name StatisticsManagementClient * @description 管理日志统计信息 * * @example * * 请使用以下方式使用该模块: * \`\`\`javascript * import { StatisticsManagementClient } from "authing-js-sdk" * const managementClient = new ManagementClient({ * userPoolId: "YOUR_USERPOOL_ID", * secret: "YOUR_USERPOOL_SECRET", * }) * managementClient.statistics.listUserActions // 查看用户操作日志 * managementClient.statistics.listAuditLogs // 查看审计日志 * \`\`\` * */ export class StatisticsManagementClient { options: ManagementClientOptions; httpClient: HttpClient; tokenProvider: ManagementTokenProvider; constructor( options: ManagementClientOptions, httpClient: HttpClient, tokenProvider: ManagementTokenProvider ) { this.options = options; this.httpClient = httpClient; this.tokenProvider = tokenProvider; } /** * 查看用户操作日志 * @param options.operationNames SupportedUserActionEnum */ async listUserActions(options?: { // 客户端 IP clientIp?: string; // 事件类型,如 login, register 等 eventType?: string; // 用户 ID userId?: string; // 应用 ID appId?: string; page?: number; limit?: number; start?: number; end?: number; }): Promise<{ totalCount: number; list: AuditLog[] }> { let requestParam: any = {}; if (options?.clientIp) { requestParam.clientip = options.clientIp; } if (options?.eventType) { requestParam.eventType = options.eventType; } if (options?.userId) { requestParam.userId = options.userId; } if (options?.appId) { requestParam.app_id = options?.appId; } if (options?.page) { requestParam.page = options.page; } if (options?.limit) { requestParam.limit = options.limit; } if (options?.start !== undefined) { requestParam.start = options?.start; } if (options?.end !== undefined) { requestParam.end = options?.end; } const result: any = await this.httpClient.request({ method: 'GET', url: `${this.options.host}/api/v2/analysis/user-action`, params: { ...requestParam } }); return result; } /** * 查看审计日志 * @param options.operationNames SupportedAdminActionEnum */ async listAuditLogs(options?: { // 客户端 IP clientIp?: string; // 事件类型,如 login, register 等 eventType?: string; // 用户 ID userId?: string; // 应用 ID appId?: string; page?: number; limit?: number; start?: number; end?: number; }): Promise<{ list: AuditLog[]; totalCount: number }> { let requestParam: any = {}; if (options?.clientIp) { requestParam.clientip = options.clientIp; } if (options?.eventType) { requestParam.eventType = options.eventType; } if (options?.userId) { requestParam.userId = options.userId; } if (options?.appId) { requestParam.app_id = options?.appId; } if (options?.page) { requestParam.page = options.page; } if (options?.limit) { requestParam.limit = options.limit; } if (options?.start !== undefined) { requestParam.start = options?.start; } if (options?.end !== undefined) { requestParam.end = options?.end; } const result: any = await this.httpClient.request({ method: 'GET', url: `${this.options.host}/api/v2/analysis/audit`, params: { ...requestParam } }); return result; } }