rl-core-api 0.4.0 → 0.5.0

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 (64) hide show
  1. package/dist/core/auth/actor.interface.d.ts +4 -0
  2. package/dist/core/auth/actor.interface.js +2 -0
  3. package/dist/core/auth/permissionScope.util.d.ts +3 -0
  4. package/dist/core/auth/permissionScope.util.js +10 -0
  5. package/dist/core/config/env.schema.d.ts +1 -0
  6. package/dist/core/config/env.schema.js +1 -0
  7. package/dist/core/context/auditContext.d.ts +1 -0
  8. package/dist/core/context/auditContext.js +8 -1
  9. package/dist/core/database/migrations/1787270400000-GroupManager.d.ts +6 -0
  10. package/dist/core/database/migrations/1787270400000-GroupManager.js +26 -0
  11. package/dist/core/database/migrations/index.js +5 -1
  12. package/dist/core/events/appEvent.enum.d.ts +1 -0
  13. package/dist/core/filters/appErrorCode.enum.d.ts +3 -1
  14. package/dist/core/filters/appErrorCode.enum.js +2 -0
  15. package/dist/core/websocket/baseGateway.d.ts +1 -0
  16. package/dist/core/websocket/baseGateway.js +3 -0
  17. package/dist/features/audit/audit.module.js +1 -0
  18. package/dist/features/audit/domain/audit.service.d.ts +8 -1
  19. package/dist/features/audit/domain/audit.service.js +18 -1
  20. package/dist/features/audit/infra/auditData.subscriber.js +4 -3
  21. package/dist/features/audit/presentation/audit.interceptor.js +8 -2
  22. package/dist/features/audit/presentation/decorators/auditable.decorator.d.ts +8 -1
  23. package/dist/features/audit/presentation/decorators/auditable.decorator.js +4 -1
  24. package/dist/features/audit/presentation/index.d.ts +1 -0
  25. package/dist/features/audit/presentation/index.js +1 -0
  26. package/dist/features/audit/presentation/userRolesChanged.listener.d.ts +7 -0
  27. package/dist/features/audit/presentation/userRolesChanged.listener.js +43 -0
  28. package/dist/features/auth/domain/auth.service.d.ts +7 -4
  29. package/dist/features/auth/domain/auth.service.js +22 -4
  30. package/dist/features/auth/domain/twoFactor.service.d.ts +2 -0
  31. package/dist/features/auth/domain/twoFactor.service.js +7 -2
  32. package/dist/features/auth/presentation/auth.controller.d.ts +2 -5
  33. package/dist/features/auth/presentation/auth.controller.js +2 -1
  34. package/dist/features/notifications/presentation/domainEvents.listener.d.ts +5 -2
  35. package/dist/features/notifications/presentation/domainEvents.listener.js +24 -2
  36. package/dist/features/rbac/domain/rbac.catalog.js +31 -2
  37. package/dist/features/rbac/domain/rbac.service.d.ts +1 -0
  38. package/dist/features/rbac/domain/rbac.service.js +14 -0
  39. package/dist/features/rbac/domain/teamScope.service.d.ts +15 -0
  40. package/dist/features/rbac/domain/teamScope.service.js +74 -0
  41. package/dist/features/rbac/infra/repositories/group.repository.d.ts +2 -0
  42. package/dist/features/rbac/infra/repositories/group.repository.js +26 -0
  43. package/dist/features/rbac/infra/schema/group.schema.d.ts +1 -0
  44. package/dist/features/rbac/infra/schema/group.schema.js +5 -0
  45. package/dist/features/rbac/presentation/commands/createGroup.command.d.ts +1 -0
  46. package/dist/features/rbac/presentation/commands/createGroup.command.js +7 -0
  47. package/dist/features/rbac/presentation/rbac.controller.d.ts +1 -0
  48. package/dist/features/rbac/presentation/rbac.controller.js +11 -0
  49. package/dist/features/rbac/presentation/responses/rbac.response.d.ts +1 -0
  50. package/dist/features/rbac/presentation/responses/rbac.response.js +4 -0
  51. package/dist/features/rbac/rbac.module.js +3 -0
  52. package/dist/features/users/domain/users.service.d.ts +16 -8
  53. package/dist/features/users/domain/users.service.js +72 -14
  54. package/dist/features/users/infra/repositories/user.repository.d.ts +1 -1
  55. package/dist/features/users/infra/repositories/user.repository.js +9 -1
  56. package/dist/features/users/presentation/commands/createUser.command.d.ts +1 -0
  57. package/dist/features/users/presentation/commands/createUser.command.js +8 -0
  58. package/dist/features/users/presentation/filters/users.filters.js +8 -0
  59. package/dist/features/users/presentation/users.controller.d.ts +5 -5
  60. package/dist/features/users/presentation/users.controller.js +33 -27
  61. package/dist/features/users/users.module.js +2 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +6 -2
  64. package/package.json +1 -1
@@ -3,6 +3,6 @@ import { PaginationQuery } from "../../../../core/utils/pagination.util";
3
3
  import { User } from "../schema/user.schema";
4
4
  export declare class UserRepository extends Repository<User> {
5
5
  constructor(dataSource: DataSource);
6
- findPaginated(query: PaginationQuery, permissions?: string[]): Promise<[User[], number]>;
6
+ findPaginated(query: PaginationQuery, permissions?: string[], reachableIds?: string[] | null): Promise<[User[], number]>;
7
7
  findWithPasswordExpiringIn(maxAgeDays: number, milestones: number[]): Promise<User[]>;
8
8
  }
@@ -25,8 +25,16 @@ let UserRepository = class UserRepository extends typeorm_1.Repository {
25
25
  constructor(dataSource) {
26
26
  super(user_schema_1.User, dataSource.createEntityManager());
27
27
  }
28
- findPaginated(query, permissions) {
28
+ findPaginated(query, permissions, reachableIds) {
29
29
  const qb = this.createQueryBuilder("user").leftJoinAndSelect("user.roles", "userRoles");
30
+ if (reachableIds) {
31
+ if (reachableIds.length === 0) {
32
+ qb.andWhere("1 = 0");
33
+ }
34
+ else {
35
+ qb.andWhere("user.id IN (:...reachableIds)", { reachableIds });
36
+ }
37
+ }
30
38
  return (0, paginateWithFilter_util_1.paginateWithFilter)(qb, {
31
39
  query,
32
40
  catalog: users_filters_1.USERS_FILTER_CATALOG,
@@ -5,4 +5,5 @@ export declare class CreateUserCommand {
5
5
  email: string;
6
6
  isActive?: boolean;
7
7
  roleIds?: string[];
8
+ groupIds?: string[];
8
9
  }
@@ -54,3 +54,11 @@ __decorate([
54
54
  (0, class_validator_1.IsUUID)("all", { each: true }),
55
55
  __metadata("design:type", Array)
56
56
  ], CreateUserCommand.prototype, "roleIds", void 0);
57
+ __decorate([
58
+ (0, swagger_1.ApiProperty)({ required: false, type: [String], format: "uuid" }),
59
+ (0, class_validator_1.IsOptional)(),
60
+ (0, class_validator_1.IsArray)(),
61
+ (0, class_validator_1.ArrayUnique)(),
62
+ (0, class_validator_1.IsUUID)("all", { each: true }),
63
+ __metadata("design:type", Array)
64
+ ], CreateUserCommand.prototype, "groupIds", void 0);
@@ -50,6 +50,14 @@ exports.USERS_FILTER_CATALOG = [
50
50
  type: filterFieldType_enum_1.FilterFieldType.DateTime,
51
51
  sortable: true,
52
52
  },
53
+ {
54
+ field: "groupName",
55
+ column: "name",
56
+ label: "Grupo",
57
+ type: filterFieldType_enum_1.FilterFieldType.Select,
58
+ optionsUrl: "/rbac/groups",
59
+ relation: { property: "groups", alias: "groups", kind: "toMany" },
60
+ },
53
61
  {
54
62
  field: "roleName",
55
63
  column: "name",
@@ -19,12 +19,12 @@ export declare class UsersController {
19
19
  deleteAvatar(userId: string): Promise<void>;
20
20
  list(query: PaginationQuery, actor: AuthenticatedUser): Promise<Paginated<User>>;
21
21
  filterSchema(actor: AuthenticatedUser): FilterFieldResponse[];
22
- findOne(id: string): Promise<User>;
22
+ findOne(id: string, actor: AuthenticatedUser): Promise<User>;
23
23
  create(dto: CreateUserCommand, actor: AuthenticatedUser): Promise<User>;
24
24
  update(id: string, dto: UpdateUserCommand, actor: AuthenticatedUser): Promise<User>;
25
- setActive(id: string, state: string): Promise<User>;
26
- sendPasswordResetLink(id: string): Promise<void>;
27
- sendFirstAccessLink(id: string): Promise<void>;
28
- adminResetTwoFactor(id: string): Promise<void>;
25
+ setActive(id: string, state: string, actor: AuthenticatedUser): Promise<User>;
26
+ sendPasswordResetLink(id: string, actor: AuthenticatedUser): Promise<void>;
27
+ sendFirstAccessLink(id: string, actor: AuthenticatedUser): Promise<void>;
28
+ adminResetTwoFactor(id: string, actor: AuthenticatedUser): Promise<void>;
29
29
  remove(id: string, current: AuthenticatedUser): Promise<void>;
30
30
  }
@@ -20,6 +20,7 @@ const multer_1 = require("multer");
20
20
  const currentUser_decorator_1 = require("../../../core/auth/decorators/currentUser.decorator");
21
21
  const requirePermission_decorator_1 = require("../../../core/auth/decorators/requirePermission.decorator");
22
22
  const permissions_guard_1 = require("../../../core/auth/guards/permissions.guard");
23
+ const permissionScope_util_1 = require("../../../core/auth/permissionScope.util");
23
24
  const filterSchema_response_1 = require("../../../core/query/filterSchema.response");
24
25
  const pagination_util_1 = require("../../../core/utils/pagination.util");
25
26
  const auditable_decorator_1 = require("../../audit/presentation/decorators/auditable.decorator");
@@ -54,31 +55,31 @@ let UsersController = class UsersController {
54
55
  await this.users.removeAvatar(userId);
55
56
  }
56
57
  list(query, actor) {
57
- return this.users.list(query, actor.permissions);
58
+ return this.users.list(query, actor);
58
59
  }
59
60
  filterSchema(actor) {
60
61
  return (0, filterSchema_response_1.toFilterSchema)(users_filters_1.USERS_FILTER_CATALOG, actor.permissions);
61
62
  }
62
- findOne(id) {
63
- return this.users.findById(id);
63
+ findOne(id, actor) {
64
+ return this.users.findByIdForActor(id, actor);
64
65
  }
65
66
  create(dto, actor) {
66
- return this.users.create(dto, actor.permissions);
67
+ return this.users.create(dto, actor);
67
68
  }
68
69
  update(id, dto, actor) {
69
- return this.users.update(id, dto, actor.permissions);
70
+ return this.users.update(id, dto, actor);
70
71
  }
71
- setActive(id, state) {
72
- return this.users.setActive(id, state === "true");
72
+ setActive(id, state, actor) {
73
+ return this.users.setActive(id, state === "true", actor);
73
74
  }
74
- async sendPasswordResetLink(id) {
75
- await this.users.sendPasswordResetLink(id);
75
+ async sendPasswordResetLink(id, actor) {
76
+ await this.users.sendPasswordResetLink(id, actor);
76
77
  }
77
- async sendFirstAccessLink(id) {
78
- await this.users.sendFirstAccessLink(id);
78
+ async sendFirstAccessLink(id, actor) {
79
+ await this.users.sendFirstAccessLink(id, actor);
79
80
  }
80
- async adminResetTwoFactor(id) {
81
- await this.users.adminResetTwoFactor(id);
81
+ async adminResetTwoFactor(id, actor) {
82
+ await this.users.adminResetTwoFactor(id, actor);
82
83
  }
83
84
  async remove(id, current) {
84
85
  if (current.id === id) {
@@ -137,7 +138,7 @@ __decorate([
137
138
  __decorate([
138
139
  (0, common_1.Get)(),
139
140
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
140
- (0, requirePermission_decorator_1.RequirePermission)("users:read:any"),
141
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:read")),
141
142
  (0, swagger_1.ApiOkResponse)({ type: user_response_1.PaginatedUsersResponse }),
142
143
  __param(0, (0, common_1.Query)()),
143
144
  __param(1, (0, currentUser_decorator_1.CurrentUser)()),
@@ -148,7 +149,7 @@ __decorate([
148
149
  __decorate([
149
150
  (0, common_1.Get)("filter-schema"),
150
151
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
151
- (0, requirePermission_decorator_1.RequirePermission)("users:read:any"),
152
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:read")),
152
153
  (0, swagger_1.ApiOkResponse)({ type: filterSchema_response_1.FilterFieldResponse, isArray: true }),
153
154
  __param(0, (0, currentUser_decorator_1.CurrentUser)()),
154
155
  __metadata("design:type", Function),
@@ -158,17 +159,18 @@ __decorate([
158
159
  __decorate([
159
160
  (0, common_1.Get)(":id"),
160
161
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
161
- (0, requirePermission_decorator_1.RequirePermission)("users:read:any"),
162
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:read")),
162
163
  (0, swagger_1.ApiOkResponse)({ type: user_response_1.UserResponse }),
163
164
  __param(0, (0, common_1.Param)("id", common_1.ParseUUIDPipe)),
165
+ __param(1, (0, currentUser_decorator_1.CurrentUser)()),
164
166
  __metadata("design:type", Function),
165
- __metadata("design:paramtypes", [String]),
167
+ __metadata("design:paramtypes", [String, Object]),
166
168
  __metadata("design:returntype", Promise)
167
169
  ], UsersController.prototype, "findOne", null);
168
170
  __decorate([
169
171
  (0, common_1.Post)(),
170
172
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
171
- (0, requirePermission_decorator_1.RequirePermission)("users:create:any"),
173
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:create")),
172
174
  (0, swagger_1.ApiOkResponse)({ type: user_response_1.UserResponse }),
173
175
  __param(0, (0, common_1.Body)()),
174
176
  __param(1, (0, currentUser_decorator_1.CurrentUser)()),
@@ -179,7 +181,7 @@ __decorate([
179
181
  __decorate([
180
182
  (0, common_1.Patch)(":id"),
181
183
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
182
- (0, requirePermission_decorator_1.RequirePermission)("users:update:any"),
184
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:update")),
183
185
  (0, swagger_1.ApiOkResponse)({ type: user_response_1.UserResponse }),
184
186
  __param(0, (0, common_1.Param)("id", common_1.ParseUUIDPipe)),
185
187
  __param(1, (0, common_1.Body)()),
@@ -191,12 +193,13 @@ __decorate([
191
193
  __decorate([
192
194
  (0, common_1.Patch)(":id/active/:state"),
193
195
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
194
- (0, requirePermission_decorator_1.RequirePermission)("users:deactivate:any"),
196
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:deactivate")),
195
197
  (0, swagger_1.ApiOkResponse)({ type: user_response_1.UserResponse }),
196
198
  __param(0, (0, common_1.Param)("id", common_1.ParseUUIDPipe)),
197
199
  __param(1, (0, common_1.Param)("state")),
200
+ __param(2, (0, currentUser_decorator_1.CurrentUser)()),
198
201
  __metadata("design:type", Function),
199
- __metadata("design:paramtypes", [String, String]),
202
+ __metadata("design:paramtypes", [String, String, Object]),
200
203
  __metadata("design:returntype", Promise)
201
204
  ], UsersController.prototype, "setActive", null);
202
205
  __decorate([
@@ -204,10 +207,11 @@ __decorate([
204
207
  (0, common_1.Post)(":id/reset-password"),
205
208
  (0, common_1.HttpCode)(204),
206
209
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
207
- (0, requirePermission_decorator_1.RequirePermission)("users:reset-password:any"),
210
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:reset-password")),
208
211
  __param(0, (0, common_1.Param)("id", common_1.ParseUUIDPipe)),
212
+ __param(1, (0, currentUser_decorator_1.CurrentUser)()),
209
213
  __metadata("design:type", Function),
210
- __metadata("design:paramtypes", [String]),
214
+ __metadata("design:paramtypes", [String, Object]),
211
215
  __metadata("design:returntype", Promise)
212
216
  ], UsersController.prototype, "sendPasswordResetLink", null);
213
217
  __decorate([
@@ -215,10 +219,11 @@ __decorate([
215
219
  (0, common_1.Post)(":id/first-access-link"),
216
220
  (0, common_1.HttpCode)(204),
217
221
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
218
- (0, requirePermission_decorator_1.RequirePermission)("users:invite:any"),
222
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:invite")),
219
223
  __param(0, (0, common_1.Param)("id", common_1.ParseUUIDPipe)),
224
+ __param(1, (0, currentUser_decorator_1.CurrentUser)()),
220
225
  __metadata("design:type", Function),
221
- __metadata("design:paramtypes", [String]),
226
+ __metadata("design:paramtypes", [String, Object]),
222
227
  __metadata("design:returntype", Promise)
223
228
  ], UsersController.prototype, "sendFirstAccessLink", null);
224
229
  __decorate([
@@ -226,10 +231,11 @@ __decorate([
226
231
  (0, common_1.Post)(":id/reset-2fa"),
227
232
  (0, common_1.HttpCode)(204),
228
233
  (0, common_1.UseGuards)(permissions_guard_1.PermissionsGuard),
229
- (0, requirePermission_decorator_1.RequirePermission)("users:update:any"),
234
+ (0, requirePermission_decorator_1.RequireAnyPermission)(...(0, permissionScope_util_1.anyOrTeam)("users:reset-password")),
230
235
  __param(0, (0, common_1.Param)("id", common_1.ParseUUIDPipe)),
236
+ __param(1, (0, currentUser_decorator_1.CurrentUser)()),
231
237
  __metadata("design:type", Function),
232
- __metadata("design:paramtypes", [String]),
238
+ __metadata("design:paramtypes", [String, Object]),
233
239
  __metadata("design:returntype", Promise)
234
240
  ], UsersController.prototype, "adminResetTwoFactor", null);
235
241
  __decorate([
@@ -12,6 +12,7 @@ const typeorm_1 = require("@nestjs/typeorm");
12
12
  const token_module_1 = require("../auth/token.module");
13
13
  const role_repository_1 = require("../rbac/infra/repositories/role.repository");
14
14
  const role_schema_1 = require("../rbac/infra/schema/role.schema");
15
+ const rbac_module_1 = require("../rbac/rbac.module");
15
16
  const domain_1 = require("./domain");
16
17
  const infra_1 = require("./infra");
17
18
  const presentation_1 = require("./presentation");
@@ -23,6 +24,7 @@ exports.UsersModule = UsersModule = __decorate([
23
24
  imports: [
24
25
  typeorm_1.TypeOrmModule.forFeature([infra_1.User, infra_1.PasswordHistory, role_schema_1.Role]),
25
26
  token_module_1.TokenModule,
27
+ rbac_module_1.RbacModule,
26
28
  ],
27
29
  controllers: [presentation_1.UsersController],
28
30
  providers: [
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export { AppBrand } from "./core/config/appBrand.interface";
8
8
  export { ConfigModule, ConfigModuleOptions, EnvValidator, } from "./core/config/config.module";
9
9
  export { Env, envSchema, validateEnv } from "./core/config/env.schema";
10
10
  export { EnvService } from "./core/config/env.service";
11
+ export { Actor } from "./core/auth/actor.interface";
11
12
  export { AuthenticatedUser, RequestWithUser, } from "./core/auth/authenticatedUser.interface";
12
13
  export { ACCESS_COOKIE, clearAuthCookies, REFRESH_COOKIE, setAuthCookies, } from "./core/auth/cookie.util";
13
14
  export { CurrentUser } from "./core/auth/decorators/currentUser.decorator";
@@ -17,6 +18,7 @@ export { AppThrottlerGuard } from "./core/auth/guards/appThrottler.guard";
17
18
  export { CsrfGuard } from "./core/auth/guards/csrf.guard";
18
19
  export { JwtAuthGuard } from "./core/auth/guards/jwtAuth.guard";
19
20
  export { PermissionsGuard } from "./core/auth/guards/permissions.guard";
21
+ export { anyOrTeam, SCOPE_ANY, SCOPE_TEAM, } from "./core/auth/permissionScope.util";
20
22
  export { applyFilter, FilterSql } from "./core/query/applyFilter.util";
21
23
  export { DEFAULT_OPERATORS, FILTER_MAX_DEPTH, FILTER_MAX_IN_ITEMS, FILTER_MAX_LENGTH, FILTER_MAX_NODES, } from "./core/query/filter.constants";
22
24
  export { FilterCatalog, FilterCondition, FilterFieldDefinition, FilterGroup, FilterNode, FilterOption, FilterRelation, } from "./core/query/filterField.interface";
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuthToken = exports.RequestLog = exports.AuditDataChange = exports.seedPermissions = exports.seedAdmin = exports.BaseEntity = exports.PaginationMetaResponse = exports.resolveOrder = exports.PaginationQuery = exports.Paginated = exports.parseFilter = exports.paginateWithFilter = exports.resolveCatalogOrder = exports.toFilterSchema = exports.FilterOptionResponse = exports.FilterFieldResponse = exports.FilterOperator = exports.FilterCombinator = exports.FilterFieldType = exports.FILTER_MAX_NODES = exports.FILTER_MAX_LENGTH = exports.FILTER_MAX_IN_ITEMS = exports.FILTER_MAX_DEPTH = exports.DEFAULT_OPERATORS = exports.applyFilter = exports.PermissionsGuard = exports.JwtAuthGuard = exports.CsrfGuard = exports.AppThrottlerGuard = exports.RequirePermission = exports.RequireAnyPermission = exports.PERMISSIONS_KEY = exports.ANY_PERMISSIONS_KEY = exports.Public = exports.IS_PUBLIC_KEY = exports.CurrentUser = exports.setAuthCookies = exports.REFRESH_COOKIE = exports.clearAuthCookies = exports.ACCESS_COOKIE = exports.EnvService = exports.validateEnv = exports.envSchema = exports.ConfigModule = exports.RlCoreModule = exports.coreEntities = exports.coreMigrations = exports.createCoreDataSource = exports.CoreModule = exports.bootstrapCore = void 0;
4
- exports.normalizeIp = exports.sha256 = exports.randomToken = exports.numericCode = exports.backupCode = exports.encryptSecret = exports.decryptSecret = exports.MailerService = exports.createAppLogger = exports.WS_USER_RESOLVER = exports.WsAuthService = exports.wrapSocketEvent = exports.SOCKET_EVENT_VERSION = exports.userRoom = exports.SESSION_REFRESH_EVENT = exports.roleRoom = exports.NOTIFICATIONS_NAMESPACE = exports.BaseGateway = exports.Auditable = exports.RequestOutcome = exports.ErrorType = exports.codedUnauthorized = exports.codedTooManyRequests = exports.codedBadRequest = exports.AppErrorCode = exports.AppEvent = exports.auditContext = exports.User = exports.PasswordHistory = exports.Scope = exports.Role = exports.Resource = exports.Permission = exports.Group = exports.Action = exports.NotificationScope = exports.NotificationRead = exports.Notification = void 0;
3
+ exports.seedPermissions = exports.seedAdmin = exports.BaseEntity = exports.PaginationMetaResponse = exports.resolveOrder = exports.PaginationQuery = exports.Paginated = exports.parseFilter = exports.paginateWithFilter = exports.resolveCatalogOrder = exports.toFilterSchema = exports.FilterOptionResponse = exports.FilterFieldResponse = exports.FilterOperator = exports.FilterCombinator = exports.FilterFieldType = exports.FILTER_MAX_NODES = exports.FILTER_MAX_LENGTH = exports.FILTER_MAX_IN_ITEMS = exports.FILTER_MAX_DEPTH = exports.DEFAULT_OPERATORS = exports.applyFilter = exports.SCOPE_TEAM = exports.SCOPE_ANY = exports.anyOrTeam = exports.PermissionsGuard = exports.JwtAuthGuard = exports.CsrfGuard = exports.AppThrottlerGuard = exports.RequirePermission = exports.RequireAnyPermission = exports.PERMISSIONS_KEY = exports.ANY_PERMISSIONS_KEY = exports.Public = exports.IS_PUBLIC_KEY = exports.CurrentUser = exports.setAuthCookies = exports.REFRESH_COOKIE = exports.clearAuthCookies = exports.ACCESS_COOKIE = exports.EnvService = exports.validateEnv = exports.envSchema = exports.ConfigModule = exports.RlCoreModule = exports.coreEntities = exports.coreMigrations = exports.createCoreDataSource = exports.CoreModule = exports.bootstrapCore = void 0;
4
+ exports.normalizeIp = exports.sha256 = exports.randomToken = exports.numericCode = exports.backupCode = exports.encryptSecret = exports.decryptSecret = exports.MailerService = exports.createAppLogger = exports.WS_USER_RESOLVER = exports.WsAuthService = exports.wrapSocketEvent = exports.SOCKET_EVENT_VERSION = exports.userRoom = exports.SESSION_REFRESH_EVENT = exports.roleRoom = exports.NOTIFICATIONS_NAMESPACE = exports.BaseGateway = exports.Auditable = exports.RequestOutcome = exports.ErrorType = exports.codedUnauthorized = exports.codedTooManyRequests = exports.codedBadRequest = exports.AppErrorCode = exports.AppEvent = exports.auditContext = exports.User = exports.PasswordHistory = exports.Scope = exports.Role = exports.Resource = exports.Permission = exports.Group = exports.Action = exports.NotificationScope = exports.NotificationRead = exports.Notification = exports.AuthToken = exports.RequestLog = exports.AuditDataChange = void 0;
5
5
  var bootstrapCore_util_1 = require("./core/bootstrap/bootstrapCore.util");
6
6
  Object.defineProperty(exports, "bootstrapCore", { enumerable: true, get: function () { return bootstrapCore_util_1.bootstrapCore; } });
7
7
  var core_module_1 = require("./core/core.module");
@@ -44,6 +44,10 @@ var jwtAuth_guard_1 = require("./core/auth/guards/jwtAuth.guard");
44
44
  Object.defineProperty(exports, "JwtAuthGuard", { enumerable: true, get: function () { return jwtAuth_guard_1.JwtAuthGuard; } });
45
45
  var permissions_guard_1 = require("./core/auth/guards/permissions.guard");
46
46
  Object.defineProperty(exports, "PermissionsGuard", { enumerable: true, get: function () { return permissions_guard_1.PermissionsGuard; } });
47
+ var permissionScope_util_1 = require("./core/auth/permissionScope.util");
48
+ Object.defineProperty(exports, "anyOrTeam", { enumerable: true, get: function () { return permissionScope_util_1.anyOrTeam; } });
49
+ Object.defineProperty(exports, "SCOPE_ANY", { enumerable: true, get: function () { return permissionScope_util_1.SCOPE_ANY; } });
50
+ Object.defineProperty(exports, "SCOPE_TEAM", { enumerable: true, get: function () { return permissionScope_util_1.SCOPE_TEAM; } });
47
51
  var applyFilter_util_1 = require("./core/query/applyFilter.util");
48
52
  Object.defineProperty(exports, "applyFilter", { enumerable: true, get: function () { return applyFilter_util_1.applyFilter; } });
49
53
  var filter_constants_1 = require("./core/query/filter.constants");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rl-core-api",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Core NestJS: autenticação com 2FA, RBAC, auditoria, notificações e listagens com filtro dinâmico",
5
5
  "author": "Rodrigo Liberti",
6
6
  "license": "MIT",