UNPKG

@mbc-cqrs-serverless/core

Version:
46 lines 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Auth = Auth; exports.AuthGuard = AuthGuard; exports.HeaderTenant = HeaderTenant; const common_1 = require("@nestjs/common"); const swagger_1 = require("@nestjs/swagger"); const constants_1 = require("../constants"); const guard_1 = require("../guard"); const roles_decorator_1 = require("./roles.decorator"); /** * Decorator that applies authentication and role-based access control. * Combines RolesGuard with Swagger documentation. * * @param roles - Required roles for access * @example * ```typescript * @Controller('orders') * export class OrderController { * @Post() * @Auth('admin', 'manager') * createOrder() {} * } * ``` */ function Auth(...roles) { return AuthGuard({ roles }); } function AuthGuard({ guard = guard_1.RolesGuard, roles, }) { return (0, common_1.applyDecorators)((0, roles_decorator_1.Roles)(...roles), (0, common_1.UseGuards)(guard), (0, swagger_1.ApiBearerAuth)(), (0, swagger_1.ApiUnauthorizedResponse)({ description: 'Request unauthorized', })); } /** * Decorator that adds tenant code header requirement to Swagger docs. */ function HeaderTenant() { return (0, swagger_1.ApiHeader)({ name: constants_1.HEADER_TENANT_CODE, description: 'current working tenant code', required: true, allowEmptyValue: false, example: 'common', }); } //# sourceMappingURL=auth.decorator.js.map