UNPKG

@superawesome/permissions-nestjs

Version:

NestJS Guard & Decorators for @superawesome/permissions, promoting orthogonal fine-grained API access control to resources.

34 lines 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.randomString = exports.nameAClass = exports.defaultExtractUserFromRequest = void 0; const permissions_1 = require("@superawesome/permissions"); const common_1 = require("@nestjs/common"); /** * @internal */ exports.defaultExtractUserFromRequest = async (req) => { if (!req.user) { throw new common_1.UnauthorizedException('SA-Permissions4NestJS(defaultExtractUserFromRequest): not found `req.user`'); } const user = Object.assign(Object.assign({}, req.user), { id: req.user.id, roles: req.user.roles || [] }); if (!permissions_1.isValidIUser(user)) { throw new common_1.UnauthorizedException('SA-Permissions4NestJS(defaultExtractUserFromRequest): `req.user` is not a valid `interface IUser {id: TId; roles: string[];}`'); } return user; }; /** * @internal * @see https://stackoverflow.com/a/48813707/799502 @todo: improve with a `theClass: ClassType<T>` like definition * @param className * @param theClass */ exports.nameAClass = (className, theClass) => ({ [className]: class extends theClass { } }[className]); /** * returns a short uuid-like string * @internal */ exports.randomString = () => Math.random() .toString(36) .slice(2, 15); //# sourceMappingURL=utils.js.map