@iquadras/shared-guards 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.gitattributes +2 -0
  2. package/LICENSE +24 -0
  3. package/README.md +201 -0
  4. package/dist/adonis/index.d.ts +7 -0
  5. package/dist/adonis/index.js +34 -0
  6. package/dist/adonis/index.js.map +1 -0
  7. package/dist/adonis/jwt.d.ts +2 -0
  8. package/dist/adonis/jwt.js +46 -0
  9. package/dist/adonis/jwt.js.map +1 -0
  10. package/dist/core/constants.d.ts +7 -0
  11. package/dist/core/constants.js +10 -0
  12. package/dist/core/constants.js.map +1 -0
  13. package/dist/core/index.d.ts +4 -0
  14. package/dist/core/index.js +21 -0
  15. package/dist/core/index.js.map +1 -0
  16. package/dist/core/jwt.d.ts +2 -0
  17. package/dist/core/jwt.js +17 -0
  18. package/dist/core/jwt.js.map +1 -0
  19. package/dist/core/permissions.d.ts +4 -0
  20. package/dist/core/permissions.js +28 -0
  21. package/dist/core/permissions.js.map +1 -0
  22. package/dist/core/types.d.ts +19 -0
  23. package/dist/core/types.js +3 -0
  24. package/dist/core/types.js.map +1 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.js +18 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/nestjs/constants.d.ts +3 -0
  29. package/dist/nestjs/constants.js +7 -0
  30. package/dist/nestjs/constants.js.map +1 -0
  31. package/dist/nestjs/decorators/auth.decorator.d.ts +1 -0
  32. package/dist/nestjs/decorators/auth.decorator.js +8 -0
  33. package/dist/nestjs/decorators/auth.decorator.js.map +1 -0
  34. package/dist/nestjs/decorators/get-user.decorator.d.ts +2 -0
  35. package/dist/nestjs/decorators/get-user.decorator.js +12 -0
  36. package/dist/nestjs/decorators/get-user.decorator.js.map +1 -0
  37. package/dist/nestjs/decorators/permissions.decorator.d.ts +9 -0
  38. package/dist/nestjs/decorators/permissions.decorator.js +6 -0
  39. package/dist/nestjs/decorators/permissions.decorator.js.map +1 -0
  40. package/dist/nestjs/decorators/require-module.decorator.d.ts +6 -0
  41. package/dist/nestjs/decorators/require-module.decorator.js +11 -0
  42. package/dist/nestjs/decorators/require-module.decorator.js.map +1 -0
  43. package/dist/nestjs/decorators/require-organization-admin.decorator.d.ts +5 -0
  44. package/dist/nestjs/decorators/require-organization-admin.decorator.js +10 -0
  45. package/dist/nestjs/decorators/require-organization-admin.decorator.js.map +1 -0
  46. package/dist/nestjs/decorators/require-super-admin.decorator.d.ts +1 -0
  47. package/dist/nestjs/decorators/require-super-admin.decorator.js +7 -0
  48. package/dist/nestjs/decorators/require-super-admin.decorator.js.map +1 -0
  49. package/dist/nestjs/guards/jwt-auth.guard.d.ts +10 -0
  50. package/dist/nestjs/guards/jwt-auth.guard.js +69 -0
  51. package/dist/nestjs/guards/jwt-auth.guard.js.map +1 -0
  52. package/dist/nestjs/guards/permissions.guard.d.ts +8 -0
  53. package/dist/nestjs/guards/permissions.guard.js +98 -0
  54. package/dist/nestjs/guards/permissions.guard.js.map +1 -0
  55. package/dist/nestjs/index.d.ts +15 -0
  56. package/dist/nestjs/index.js +29 -0
  57. package/dist/nestjs/index.js.map +1 -0
  58. package/dist/nestjs/module/shared-guards.module.d.ts +4 -0
  59. package/dist/nestjs/module/shared-guards.module.js +44 -0
  60. package/dist/nestjs/module/shared-guards.module.js.map +1 -0
  61. package/dist/nestjs/utils/logger.util.d.ts +2 -0
  62. package/dist/nestjs/utils/logger.util.js +6 -0
  63. package/dist/nestjs/utils/logger.util.js.map +1 -0
  64. package/dist/react/index.d.ts +5 -0
  65. package/dist/react/index.js +24 -0
  66. package/dist/react/index.js.map +1 -0
  67. package/dist/tsconfig.tsbuildinfo +1 -0
  68. package/package.json +74 -0
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequireSuperAdminAuth = void 0;
4
+ const permissions_decorator_1 = require("./permissions.decorator");
5
+ const RequireSuperAdminAuth = () => (0, permissions_decorator_1.Permission)({ type: 'SUPER_ADMIN_ONLY' });
6
+ exports.RequireSuperAdminAuth = RequireSuperAdminAuth;
7
+ //# sourceMappingURL=require-super-admin.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-super-admin.decorator.js","sourceRoot":"","sources":["../../../src/nestjs/decorators/require-super-admin.decorator.ts"],"names":[],"mappings":";;;AAAA,mEAAqD;AAE9C,MAAM,qBAAqB,GAAG,GAAG,EAAE,CACxC,IAAA,kCAAU,EAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAD9B,QAAA,qBAAqB,yBACS"}
@@ -0,0 +1,10 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { JwtService } from '@nestjs/jwt';
3
+ import { Reflector } from '@nestjs/core';
4
+ export declare class JwtAuthGuard implements CanActivate {
5
+ private readonly jwtService;
6
+ private readonly reflector;
7
+ constructor(jwtService: JwtService, reflector: Reflector);
8
+ canActivate(context: ExecutionContext): Promise<boolean>;
9
+ private extractTokenFromHeader;
10
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.JwtAuthGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const jwt_1 = require("@nestjs/jwt");
15
+ const core_1 = require("@nestjs/core");
16
+ const logger_util_1 = require("../utils/logger.util");
17
+ const constants_1 = require("../constants");
18
+ const permissions_decorator_1 = require("../decorators/permissions.decorator");
19
+ let JwtAuthGuard = class JwtAuthGuard {
20
+ constructor(jwtService, reflector) {
21
+ this.jwtService = jwtService;
22
+ this.reflector = reflector;
23
+ }
24
+ async canActivate(context) {
25
+ const requiresAuth = this.reflector.getAllAndOverride(constants_1.REQUIRES_AUTH_KEY, [
26
+ context.getHandler(),
27
+ context.getClass(),
28
+ ]) ||
29
+ this.reflector.getAllAndOverride(permissions_decorator_1.Permission, [
30
+ context.getHandler(),
31
+ context.getClass(),
32
+ ]);
33
+ if (!requiresAuth) {
34
+ logger_util_1.guardsLogger.debug('Rota pública - bypass de autenticação');
35
+ return true;
36
+ }
37
+ const request = context.switchToHttp().getRequest();
38
+ const token = this.extractTokenFromHeader(request);
39
+ if (!token) {
40
+ logger_util_1.guardsLogger.warn('Requisição sem token JWT no header x-auth-access-token');
41
+ throw new common_1.UnauthorizedException('Token de autenticação não fornecido');
42
+ }
43
+ try {
44
+ const payload = await this.jwtService.verifyAsync(token);
45
+ request.user = payload;
46
+ logger_util_1.guardsLogger.debug(`Usuário autenticado: ${payload.sub} (${payload.email})`);
47
+ return true;
48
+ }
49
+ catch (error) {
50
+ logger_util_1.guardsLogger.warn(`Token JWT inválido ou expirado: ${error instanceof Error ? error.message : 'Erro desconhecido'}`);
51
+ throw new common_1.UnauthorizedException('Token inválido ou expirado');
52
+ }
53
+ }
54
+ extractTokenFromHeader(request) {
55
+ const token = request.headers['x-auth-access-token'];
56
+ if (typeof token === 'string')
57
+ return token;
58
+ if (Array.isArray(token) && token.length > 0)
59
+ return token[0];
60
+ return undefined;
61
+ }
62
+ };
63
+ exports.JwtAuthGuard = JwtAuthGuard;
64
+ exports.JwtAuthGuard = JwtAuthGuard = __decorate([
65
+ (0, common_1.Injectable)(),
66
+ __metadata("design:paramtypes", [jwt_1.JwtService,
67
+ core_1.Reflector])
68
+ ], JwtAuthGuard);
69
+ //# sourceMappingURL=jwt-auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/nestjs/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,qCAAyC;AACzC,uCAAyC;AAEzC,sDAAoD;AACpD,4CAAiD;AACjD,+EAAiE;AAI1D,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,YACmB,UAAsB,EACtB,SAAoB;QADpB,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,6BAAiB,EAAE;YAC3D,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,kCAAU,EAAE;gBAC3C,OAAO,CAAC,UAAU,EAAE;gBACpB,OAAO,CAAC,QAAQ,EAAE;aACnB,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,0BAAY,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,0BAAY,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YAC5E,MAAM,IAAI,8BAAqB,CAAC,qCAAqC,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAa,KAAK,CAAC,CAAC;YACpE,OAA0C,CAAC,IAAI,GAAG,OAAO,CAAC;YAC3D,0BAAY,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0BAAY,CAAC,IAAI,CACf,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAClG,CAAC;YACF,MAAM,IAAI,8BAAqB,CAAC,4BAA4B,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,OAAgB;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AAjDY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAGoB,gBAAU;QACX,gBAAS;GAH5B,YAAY,CAiDxB"}
@@ -0,0 +1,8 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ export declare class PermissionsGuard implements CanActivate {
4
+ private readonly reflector;
5
+ constructor(reflector: Reflector);
6
+ canActivate(context: ExecutionContext): boolean;
7
+ private checkPermission;
8
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PermissionsGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const logger_util_1 = require("../utils/logger.util");
16
+ const permissions_1 = require("../../core/permissions");
17
+ const permissions_decorator_1 = require("../decorators/permissions.decorator");
18
+ function getByPath(obj, path) {
19
+ return path.split('.').reduce((o, key) => o?.[key], obj);
20
+ }
21
+ function resolveOrganizationId(request, organizationIdSource) {
22
+ const paths = Array.isArray(organizationIdSource)
23
+ ? organizationIdSource
24
+ : [organizationIdSource];
25
+ for (const path of paths) {
26
+ const value = getByPath(request, path);
27
+ if (typeof value === 'string' && value.trim() !== '') {
28
+ return value;
29
+ }
30
+ }
31
+ return undefined;
32
+ }
33
+ let PermissionsGuard = class PermissionsGuard {
34
+ constructor(reflector) {
35
+ this.reflector = reflector;
36
+ }
37
+ canActivate(context) {
38
+ const permissionMetadata = this.reflector.getAllAndOverride(permissions_decorator_1.Permission, [context.getHandler(), context.getClass()]);
39
+ if (!permissionMetadata) {
40
+ logger_util_1.guardsLogger.debug('Nenhuma restrição de permissão - acesso permitido');
41
+ return true;
42
+ }
43
+ const request = context.switchToHttp().getRequest();
44
+ const user = request.user;
45
+ if (!user) {
46
+ logger_util_1.guardsLogger.error('PermissionsGuard executado sem usuário autenticado. Use JwtAuthGuard antes.');
47
+ throw new common_1.ForbiddenException('Usuário não autenticado');
48
+ }
49
+ const hasPermission = this.checkPermission(user, permissionMetadata, request);
50
+ if (!hasPermission) {
51
+ logger_util_1.guardsLogger.warn(`Acesso negado para usuário ${user.sub}: tipo=${permissionMetadata.type}, ` +
52
+ `module=${permissionMetadata.module ?? 'N/A'}`);
53
+ throw new common_1.ForbiddenException('Você não tem permissão para acessar este recurso');
54
+ }
55
+ logger_util_1.guardsLogger.debug(`Permissão concedida para usuário ${user.sub}`);
56
+ return true;
57
+ }
58
+ checkPermission(user, metadata, request) {
59
+ switch (metadata.type) {
60
+ case 'SUPER_ADMIN_ONLY':
61
+ return (0, permissions_1.isSuperAdmin)(user);
62
+ case 'ORGANIZATION_ADMIN_ONLY': {
63
+ if (!metadata.organizationIdSource) {
64
+ throw new common_1.InternalServerErrorException('@RequireOrganizationAdminAuth() exige organizationIdSource. Ex: RequireOrganizationAdminAuth({ organizationIdSource: "params.organizationId" })');
65
+ }
66
+ const organizationId = resolveOrganizationId(request, metadata.organizationIdSource);
67
+ if (!organizationId) {
68
+ logger_util_1.guardsLogger.warn(`OrganizationAdmin requerido mas organizationId não encontrado em ${metadata.organizationIdSource}`);
69
+ return false;
70
+ }
71
+ return (0, permissions_1.isOrgAdmin)(user, organizationId);
72
+ }
73
+ case 'MODULE_ACCESS': {
74
+ if (!metadata.organizationIdSource) {
75
+ throw new common_1.InternalServerErrorException('@RequireModuleAuth() exige organizationIdSource. Ex: RequireModuleAuth(MODULES.BOOKING, { organizationIdSource: "params.organizationId" })');
76
+ }
77
+ if (!metadata.module) {
78
+ throw new common_1.InternalServerErrorException('@RequireModuleAuth() exige module');
79
+ }
80
+ const organizationId = resolveOrganizationId(request, metadata.organizationIdSource);
81
+ if (!organizationId) {
82
+ logger_util_1.guardsLogger.warn(`ModuleAccess requerido mas organizationId não encontrado em ${metadata.organizationIdSource}`);
83
+ return false;
84
+ }
85
+ return (0, permissions_1.hasModuleAccess)(user, organizationId, metadata.module);
86
+ }
87
+ default:
88
+ logger_util_1.guardsLogger.warn(`Tipo de permissão desconhecido: ${metadata.type}`);
89
+ return false;
90
+ }
91
+ }
92
+ };
93
+ exports.PermissionsGuard = PermissionsGuard;
94
+ exports.PermissionsGuard = PermissionsGuard = __decorate([
95
+ (0, common_1.Injectable)(),
96
+ __metadata("design:paramtypes", [core_1.Reflector])
97
+ ], PermissionsGuard);
98
+ //# sourceMappingURL=permissions.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.guard.js","sourceRoot":"","sources":["../../../src/nestjs/guards/permissions.guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export * from './module/shared-guards.module';
2
+ export * from './guards/jwt-auth.guard';
3
+ export * from './guards/permissions.guard';
4
+ export * from './decorators/auth.decorator';
5
+ export * from './decorators/get-user.decorator';
6
+ export * from './decorators/require-module.decorator';
7
+ export * from './decorators/require-organization-admin.decorator';
8
+ export * from './decorators/require-super-admin.decorator';
9
+ export * from './constants';
10
+ export { MODULES } from '../core/constants';
11
+ export type { JwtPayload, OrganizationPermission } from '../core/types';
12
+ export type { ModuleType } from '../core/constants';
13
+ export type { OrganizationIdSource } from './decorators/permissions.decorator';
14
+ export type { RequireOrganizationAdminOptions } from './decorators/require-organization-admin.decorator';
15
+ export type { RequireModuleAuthOptions } from './decorators/require-module.decorator';
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MODULES = void 0;
18
+ __exportStar(require("./module/shared-guards.module"), exports);
19
+ __exportStar(require("./guards/jwt-auth.guard"), exports);
20
+ __exportStar(require("./guards/permissions.guard"), exports);
21
+ __exportStar(require("./decorators/auth.decorator"), exports);
22
+ __exportStar(require("./decorators/get-user.decorator"), exports);
23
+ __exportStar(require("./decorators/require-module.decorator"), exports);
24
+ __exportStar(require("./decorators/require-organization-admin.decorator"), exports);
25
+ __exportStar(require("./decorators/require-super-admin.decorator"), exports);
26
+ __exportStar(require("./constants"), exports);
27
+ var constants_1 = require("../core/constants");
28
+ Object.defineProperty(exports, "MODULES", { enumerable: true, get: function () { return constants_1.MODULES; } });
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,0DAAwC;AACxC,6DAA2C;AAC3C,8DAA4C;AAC5C,kEAAgD;AAChD,wEAAsD;AACtD,oFAAkE;AAClE,6EAA2D;AAC3D,8CAA4B;AAC5B,+CAA4C;AAAnC,oGAAA,OAAO,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ export declare class SharedGuardsModule {
3
+ static forRoot(): DynamicModule;
4
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var SharedGuardsModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SharedGuardsModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const jwt_1 = require("@nestjs/jwt");
13
+ const core_1 = require("@nestjs/core");
14
+ const jwt_auth_guard_1 = require("../guards/jwt-auth.guard");
15
+ const permissions_guard_1 = require("../guards/permissions.guard");
16
+ let SharedGuardsModule = SharedGuardsModule_1 = class SharedGuardsModule {
17
+ static forRoot() {
18
+ const jwtSecret = process.env.JWT_SECRET;
19
+ if (!jwtSecret) {
20
+ throw new Error('JWT_SECRET deve ser definido na variável de ambiente');
21
+ }
22
+ return {
23
+ module: SharedGuardsModule_1,
24
+ global: true,
25
+ imports: [
26
+ jwt_1.JwtModule.register({
27
+ secret: jwtSecret,
28
+ signOptions: { expiresIn: '7d' },
29
+ }),
30
+ ],
31
+ providers: [
32
+ { provide: core_1.APP_GUARD, useClass: jwt_auth_guard_1.JwtAuthGuard },
33
+ { provide: core_1.APP_GUARD, useClass: permissions_guard_1.PermissionsGuard },
34
+ ],
35
+ exports: [jwt_1.JwtModule],
36
+ };
37
+ }
38
+ };
39
+ exports.SharedGuardsModule = SharedGuardsModule;
40
+ exports.SharedGuardsModule = SharedGuardsModule = SharedGuardsModule_1 = __decorate([
41
+ (0, common_1.Global)(),
42
+ (0, common_1.Module)({})
43
+ ], SharedGuardsModule);
44
+ //# sourceMappingURL=shared-guards.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-guards.module.js","sourceRoot":"","sources":["../../../src/nestjs/module/shared-guards.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,qCAAwC;AACxC,uCAAyC;AACzC,6DAAwD;AACxD,mEAA+D;AAIxD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC7B,MAAM,CAAC,OAAO;QACZ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO;YACL,MAAM,EAAE,oBAAkB;YAC1B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,eAAS,CAAC,QAAQ,CAAC;oBACjB,MAAM,EAAE,SAAS;oBACjB,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;iBACjC,CAAC;aACH;YACD,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,gBAAS,EAAE,QAAQ,EAAE,6BAAY,EAAE;gBAC9C,EAAE,OAAO,EAAE,gBAAS,EAAE,QAAQ,EAAE,oCAAgB,EAAE;aACnD;YACD,OAAO,EAAE,CAAC,eAAS,CAAC;SACrB,CAAC;IACJ,CAAC;CACF,CAAA;AAvBY,gDAAkB;6BAAlB,kBAAkB;IAF9B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAuB9B"}
@@ -0,0 +1,2 @@
1
+ import { Logger } from '@nestjs/common';
2
+ export declare const guardsLogger: Logger;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guardsLogger = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.guardsLogger = new common_1.Logger('NestSharedGuards');
6
+ //# sourceMappingURL=logger.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.util.js","sourceRoot":"","sources":["../../../src/nestjs/utils/logger.util.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAE3B,QAAA,YAAY,GAAG,IAAI,eAAM,CAAC,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { MODULES, AUTH_ACCESS_TOKEN_HEADER } from '../core';
2
+ export type { JwtPayload, OrganizationPermission, ModuleType } from '../core';
3
+ export declare function isSuperAdmin(token: string): boolean;
4
+ export declare function isOrgAdmin(token: string, organizationId: string): boolean;
5
+ export declare function hasModuleAccess(token: string, organizationId: string, module: string): boolean;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AUTH_ACCESS_TOKEN_HEADER = exports.MODULES = void 0;
4
+ exports.isSuperAdmin = isSuperAdmin;
5
+ exports.isOrgAdmin = isOrgAdmin;
6
+ exports.hasModuleAccess = hasModuleAccess;
7
+ const jwt_1 = require("../core/jwt");
8
+ const permissions_1 = require("../core/permissions");
9
+ var core_1 = require("../core");
10
+ Object.defineProperty(exports, "MODULES", { enumerable: true, get: function () { return core_1.MODULES; } });
11
+ Object.defineProperty(exports, "AUTH_ACCESS_TOKEN_HEADER", { enumerable: true, get: function () { return core_1.AUTH_ACCESS_TOKEN_HEADER; } });
12
+ function isSuperAdmin(token) {
13
+ const user = (0, jwt_1.decodeToken)(token);
14
+ return (0, permissions_1.isSuperAdmin)(user);
15
+ }
16
+ function isOrgAdmin(token, organizationId) {
17
+ const user = (0, jwt_1.decodeToken)(token);
18
+ return (0, permissions_1.isOrgAdmin)(user, organizationId);
19
+ }
20
+ function hasModuleAccess(token, organizationId, module) {
21
+ const user = (0, jwt_1.decodeToken)(token);
22
+ return (0, permissions_1.hasModuleAccess)(user, organizationId, module);
23
+ }
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":";;;AAeA,oCAGC;AAED,gCAGC;AAED,0CAOC;AA3BD,qCAA0C;AAC1C,qDAI6B;AAE7B,gCAA4D;AAAnD,+FAAA,OAAO,OAAA;AAAE,gHAAA,wBAAwB,OAAA;AAG1C,SAAgB,YAAY,CAAC,KAAa;IACxC,MAAM,IAAI,GAAG,IAAA,iBAAW,EAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAA,0BAAgB,EAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa,EAAE,cAAsB;IAC9D,MAAM,IAAI,GAAG,IAAA,iBAAW,EAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAA,wBAAc,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,eAAe,CAC7B,KAAa,EACb,cAAsB,EACtB,MAAc;IAEd,MAAM,IAAI,GAAG,IAAA,iBAAW,EAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAA,6BAAmB,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC"}