@superawesome/permissions-nestjs
Version:
NestJS Guard & Decorators for @superawesome/permissions, promoting orthogonal fine-grained API access control to resources.
34 lines • 1.32 kB
JavaScript
;
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