@mbc-cqrs-serverless/core
Version:
CQRS and event base core
46 lines • 1.48 kB
JavaScript
;
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