1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00
unleash.unleash/src/lib/util/extract-user.ts
Christopher Kolstad efcf04487d
chore: make it build with strict null checks set to true (#9554)
As part of preparation for ESM and node/TSC updates, this PR will make
Unleash build with strictNullChecks set to true, since that's what's in
our tsconfig file. Hence, this PR also removes the `--strictNullChecks
false` flag in our compile tasks in package.json.

TL;DR - Clean up your code rather than turning off compiler security
features :)
2025-03-19 10:01:49 +01:00

48 lines
1.3 KiB
TypeScript

import { SYSTEM_USER, SYSTEM_USER_AUDIT } 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_AUDIT.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,
});