feat(reception): Add activity logging, session metadata and org-selection UI (backend and frontend)
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import * as plugins from '../plugins.js';
|
||||
import { ActivityLogManager } from './classes.activitylogmanager.js';
|
||||
|
||||
/**
|
||||
* ActivityLog tracks user actions for audit and display purposes
|
||||
*/
|
||||
@plugins.smartdata.Manager()
|
||||
export class ActivityLog extends plugins.smartdata.SmartDataDbDoc<
|
||||
ActivityLog,
|
||||
plugins.idpInterfaces.data.IActivityLog,
|
||||
ActivityLogManager
|
||||
> {
|
||||
// ======
|
||||
// static
|
||||
// ======
|
||||
public static async createActivityLog(
|
||||
managerArg: ActivityLogManager,
|
||||
userId: string,
|
||||
action: plugins.idpInterfaces.data.TActivityAction,
|
||||
description: string,
|
||||
metadata?: {
|
||||
ip?: string;
|
||||
userAgent?: string;
|
||||
targetId?: string;
|
||||
targetType?: string;
|
||||
}
|
||||
) {
|
||||
const activityLog = new managerArg.CActivityLog();
|
||||
activityLog.id = plugins.smartunique.shortId();
|
||||
activityLog.data = {
|
||||
userId,
|
||||
action,
|
||||
timestamp: Date.now(),
|
||||
metadata: {
|
||||
description,
|
||||
...metadata,
|
||||
},
|
||||
};
|
||||
await activityLog.save();
|
||||
return activityLog;
|
||||
}
|
||||
|
||||
// ========
|
||||
// INSTANCE
|
||||
// ========
|
||||
@plugins.smartdata.unI()
|
||||
public id: string;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public data: plugins.idpInterfaces.data.IActivityLog['data'] = {
|
||||
userId: null,
|
||||
action: null,
|
||||
timestamp: null,
|
||||
metadata: {
|
||||
description: null,
|
||||
},
|
||||
};
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user