mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-31 00:16:47 +01:00
cf2bd28ff6
I've tried to use/add the audit info to all events I could see/find. This makes this PR necessarily huge, because we do store quite a few events. I realise it might not be complete yet, but tests run green, and I think we now have a pattern to follow for other events.
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import { SYSTEM_USER } from '../../lib/types';
|
|
import type {
|
|
IApiRequest,
|
|
IApiUser,
|
|
IAuditUser,
|
|
IAuthRequest,
|
|
IUser,
|
|
} from '../server-impl';
|
|
|
|
export function extractUsernameFromUser(user: IUser | IApiUser): string {
|
|
return (user as IUser)?.email || user?.username || SYSTEM_USER.username;
|
|
}
|
|
|
|
export function extractUsername(req: IAuthRequest | IApiRequest): string {
|
|
return extractUsernameFromUser(req.user);
|
|
}
|
|
|
|
export const extractUserIdFromUser = (user: IUser | IApiUser) =>
|
|
(user as IUser)?.id ||
|
|
(user as IApiUser)?.internalAdminTokenUserId ||
|
|
SYSTEM_USER.id;
|
|
|
|
export const extractUserId = (req: IAuthRequest | IApiRequest) =>
|
|
extractUserIdFromUser(req.user);
|
|
|
|
export const extractUserInfo = (req: IAuthRequest | IApiRequest) => ({
|
|
id: extractUserId(req),
|
|
username: extractUsername(req),
|
|
});
|
|
|
|
export const extractAuditInfoFromUser = (
|
|
user: IUser | IApiUser,
|
|
ip: string = '127.0.0.1',
|
|
): IAuditUser => ({
|
|
id: extractUserIdFromUser(user),
|
|
username: extractUsernameFromUser(user),
|
|
ip,
|
|
});
|
|
export const extractAuditInfo = (
|
|
req: IAuthRequest | IApiRequest,
|
|
): IAuditUser => ({
|
|
id: extractUserId(req),
|
|
username: extractUsername(req),
|
|
ip: req.ip,
|
|
});
|