port-nimara-client-portal/server/api/admin/audit-logs/stats.ts

44 lines
1017 B
TypeScript

import { requireAdmin } from '~/server/utils/auth';
import { getAuditStats } from '~/server/utils/audit-logger';
export default defineEventHandler(async (event) => {
console.log('[ADMIN] Audit stats request');
try {
// Require admin authentication
await requireAdmin(event);
// Get query parameters
const query = getQuery(event);
const days = query.days ? parseInt(query.days as string) : 30;
// Get audit statistics
const stats = await getAuditStats(days);
console.log('[ADMIN] Returning audit stats:', {
totalEvents: stats.totalEvents,
days
});
return {
success: true,
data: stats
};
} catch (error: any) {
console.error('[ADMIN] Failed to get audit stats:', error);
if (error.statusCode === 403) {
return {
success: false,
error: 'Insufficient permissions. Admin access required.'
};
}
return {
success: false,
error: 'Failed to retrieve audit statistics'
};
}
});