1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-31 00:16:47 +01:00
unleash.unleash/src/lib/util/extract-user.ts
Christopher Kolstad cf2bd28ff6
feat: use audit info in events (#6872)
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.
2024-04-18 16:32:35 +02:00

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,
});