nest-authify
Version:
Complete authentication and authorization package for NestJS - Monolith and Microservices ready with OAuth, JWT, Redis sessions
34 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Auth = Auth;
const common_1 = require("@nestjs/common");
const swagger_1 = require("@nestjs/swagger");
const jwt_auth_guard_1 = require("../guards/jwt-auth.guard");
const roles_guard_1 = require("../guards/roles.guard");
const permissions_guard_1 = require("../guards/permissions.guard");
const public_decorator_1 = require("./public.decorator");
const roles_decorator_1 = require("./roles.decorator");
const permissions_decorator_1 = require("./permissions.decorator");
function Auth(options = {}) {
const decorators = [];
if (options.public) {
decorators.push((0, public_decorator_1.Public)());
return (0, common_1.applyDecorators)(...decorators);
}
const guards = [jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard, permissions_guard_1.PermissionsGuard];
if (options.guards && options.guards.length > 0) {
guards.push(...options.guards);
}
decorators.push((0, common_1.UseGuards)(...guards));
if (options.roles && options.roles.length > 0) {
decorators.push((0, roles_decorator_1.Roles)(...options.roles));
}
if (options.permissions && options.permissions.length > 0) {
decorators.push((0, permissions_decorator_1.Permissions)(...options.permissions));
}
if (options.swagger !== false) {
decorators.push((0, swagger_1.ApiBearerAuth)(), (0, swagger_1.ApiUnauthorizedResponse)({ description: 'Unauthorized' }));
}
return (0, common_1.applyDecorators)(...decorators);
}
//# sourceMappingURL=auth.decorator.js.map