@mostajs/rbac 1.0.3 → 1.0.5

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 (84) hide show
  1. package/dist/api/categories-id.d.ts.map +1 -1
  2. package/dist/api/categories-id.js +2 -1
  3. package/dist/api/categories-id.js.map +1 -1
  4. package/dist/api/categories.js +1 -1
  5. package/dist/api/categories.js.map +1 -1
  6. package/dist/api/matrix.d.ts.map +1 -1
  7. package/dist/api/matrix.js +3 -1
  8. package/dist/api/matrix.js.map +1 -1
  9. package/dist/api/permissions-id.d.ts.map +1 -1
  10. package/dist/api/permissions-id.js +2 -1
  11. package/dist/api/permissions-id.js.map +1 -1
  12. package/dist/api/permissions.d.ts.map +1 -1
  13. package/dist/api/permissions.js +3 -1
  14. package/dist/api/permissions.js.map +1 -1
  15. package/dist/api/roles-id.d.ts.map +1 -1
  16. package/dist/api/roles-id.js +2 -1
  17. package/dist/api/roles-id.js.map +1 -1
  18. package/dist/api/roles.d.ts.map +1 -1
  19. package/dist/api/roles.js +2 -1
  20. package/dist/api/roles.js.map +1 -1
  21. package/dist/api/seed.d.ts.map +1 -1
  22. package/dist/api/seed.js +3 -1
  23. package/dist/api/seed.js.map +1 -1
  24. package/dist/api/users-id.d.ts.map +1 -1
  25. package/dist/api/users-id.js +2 -1
  26. package/dist/api/users-id.js.map +1 -1
  27. package/dist/api/users.d.ts.map +1 -1
  28. package/dist/api/users.js +2 -1
  29. package/dist/api/users.js.map +1 -1
  30. package/dist/components/ui/button.d.ts +1 -1
  31. package/dist/index.d.ts +12 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +16 -4
  34. package/dist/index.js.map +1 -1
  35. package/dist/lib/permissions-server.d.ts +6 -0
  36. package/dist/lib/permissions-server.d.ts.map +1 -0
  37. package/dist/lib/permissions-server.js +25 -0
  38. package/dist/lib/permissions-server.js.map +1 -0
  39. package/dist/lib/rbac-seed.d.ts +16 -0
  40. package/dist/lib/rbac-seed.d.ts.map +1 -0
  41. package/dist/lib/rbac-seed.js +39 -0
  42. package/dist/lib/rbac-seed.js.map +1 -0
  43. package/dist/lib/route-handlers.d.ts +42 -0
  44. package/dist/lib/route-handlers.d.ts.map +1 -0
  45. package/dist/lib/route-handlers.js +74 -0
  46. package/dist/lib/route-handlers.js.map +1 -0
  47. package/dist/repositories/permission-category.repository.d.ts +11 -0
  48. package/dist/repositories/permission-category.repository.d.ts.map +1 -0
  49. package/dist/repositories/permission-category.repository.js +18 -0
  50. package/dist/repositories/permission-category.repository.js.map +1 -0
  51. package/dist/repositories/permission.repository.d.ts +13 -0
  52. package/dist/repositories/permission.repository.d.ts.map +1 -0
  53. package/dist/repositories/permission.repository.js +22 -0
  54. package/dist/repositories/permission.repository.js.map +1 -0
  55. package/dist/repositories/role.repository.d.ts +19 -0
  56. package/dist/repositories/role.repository.d.ts.map +1 -0
  57. package/dist/repositories/role.repository.js +34 -0
  58. package/dist/repositories/role.repository.js.map +1 -0
  59. package/dist/repositories/user.repository.d.ts +25 -0
  60. package/dist/repositories/user.repository.d.ts.map +1 -0
  61. package/dist/repositories/user.repository.js +46 -0
  62. package/dist/repositories/user.repository.js.map +1 -0
  63. package/dist/schemas/permission-category.schema.d.ts +3 -0
  64. package/dist/schemas/permission-category.schema.d.ts.map +1 -0
  65. package/dist/schemas/permission-category.schema.js +18 -0
  66. package/dist/schemas/permission-category.schema.js.map +1 -0
  67. package/dist/schemas/permission.schema.d.ts +3 -0
  68. package/dist/schemas/permission.schema.d.ts.map +1 -0
  69. package/dist/schemas/permission.schema.js +13 -0
  70. package/dist/schemas/permission.schema.js.map +1 -0
  71. package/dist/schemas/role.schema.d.ts +3 -0
  72. package/dist/schemas/role.schema.d.ts.map +1 -0
  73. package/dist/schemas/role.schema.js +14 -0
  74. package/dist/schemas/role.schema.js.map +1 -0
  75. package/dist/schemas/user.schema.d.ts +3 -0
  76. package/dist/schemas/user.schema.d.ts.map +1 -0
  77. package/dist/schemas/user.schema.js +21 -0
  78. package/dist/schemas/user.schema.js.map +1 -0
  79. package/dist/types/index.d.ts +40 -0
  80. package/dist/types/index.d.ts.map +1 -1
  81. package/dist/types/index.js +1 -1
  82. package/dist/types/index.js.map +1 -1
  83. package/package.json +27 -5
  84. package/wire.json +12 -0
@@ -0,0 +1,42 @@
1
+ export declare const usersHandlers: {
2
+ GET: any;
3
+ POST: any;
4
+ };
5
+ export declare const usersIdHandlers: {
6
+ GET: any;
7
+ PUT: any;
8
+ DELETE: any;
9
+ };
10
+ export declare const rolesHandlers: {
11
+ GET: any;
12
+ POST: any;
13
+ };
14
+ export declare const rolesIdHandlers: {
15
+ GET: any;
16
+ PUT: any;
17
+ DELETE: any;
18
+ };
19
+ export declare const permissionsHandlers: {
20
+ GET: any;
21
+ POST: any;
22
+ };
23
+ export declare const permissionsIdHandlers: {
24
+ PUT: any;
25
+ DELETE: any;
26
+ };
27
+ export declare const categoriesHandlers: {
28
+ GET: any;
29
+ POST: any;
30
+ };
31
+ export declare const categoriesIdHandlers: {
32
+ PUT: any;
33
+ DELETE: any;
34
+ };
35
+ export declare const matrixHandlers: {
36
+ GET: any;
37
+ POST: any;
38
+ };
39
+ export declare const seedHandlers: {
40
+ POST: any;
41
+ };
42
+ //# sourceMappingURL=route-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-handlers.d.ts","sourceRoot":"","sources":["../../lib/route-handlers.ts"],"names":[],"mappings":"AAmEA,eAAO,MAAM,aAAa;SAAuB,GAAG;UAAsB,GAAG;CAAE,CAAA;AAC/E,eAAO,MAAM,eAAe;SAAyB,GAAG;SAAsB,GAAG;YAA4B,GAAG;CAAE,CAAA;AAClH,eAAO,MAAM,aAAa;SAAuB,GAAG;UAAsB,GAAG;CAAE,CAAA;AAC/E,eAAO,MAAM,eAAe;SAAyB,GAAG;SAAsB,GAAG;YAA4B,GAAG;CAAE,CAAA;AAClH,eAAO,MAAM,mBAAmB;SAA6B,GAAG;UAA4B,GAAG;CAAE,CAAA;AACjG,eAAO,MAAM,qBAAqB;SAA+B,GAAG;YAAkC,GAAG;CAAE,CAAA;AAC3G,eAAO,MAAM,kBAAkB;SAA4B,GAAG;UAA2B,GAAG;CAAE,CAAA;AAC9F,eAAO,MAAM,oBAAoB;SAA8B,GAAG;YAAiC,GAAG;CAAE,CAAA;AACxG,eAAO,MAAM,cAAc;SAAwB,GAAG;UAAuB,GAAG;CAAE,CAAA;AAClF,eAAO,MAAM,YAAY;UAAwB,GAAG;CAAE,CAAA"}
@@ -0,0 +1,74 @@
1
+ // @mostajs/rbac — Self-contained route handlers for runtime registration
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ // Phase 5: Bare handlers — permission checking by catch-all.
4
+ import { createUsersHandler } from '../api/users.js';
5
+ import { createUsersIdHandler } from '../api/users-id.js';
6
+ import { createRolesHandler } from '../api/roles.js';
7
+ import { createRolesIdHandler } from '../api/roles-id.js';
8
+ import { createPermissionsHandler } from '../api/permissions.js';
9
+ import { createPermissionsIdHandler } from '../api/permissions-id.js';
10
+ import { createCategoriesHandler } from '../api/categories.js';
11
+ import { createCategoriesIdHandler } from '../api/categories-id.js';
12
+ import { createMatrixHandler } from '../api/matrix.js';
13
+ import { createSeedHandler } from '../api/seed.js';
14
+ // No-op auth — catch-all enforces permissions
15
+ const noAuth = async (_perm) => ({ error: null, session: { user: { id: '' } } });
16
+ const users = createUsersHandler({
17
+ checkPermission: noAuth,
18
+ adminPermission: 'admin:access',
19
+ });
20
+ const usersId = createUsersIdHandler({
21
+ checkPermission: noAuth,
22
+ adminPermission: 'admin:access',
23
+ });
24
+ const roles = createRolesHandler({
25
+ checkPermission: noAuth,
26
+ adminPermission: 'admin:access',
27
+ defaultRoles: {},
28
+ });
29
+ const rolesId = createRolesIdHandler({
30
+ checkPermission: noAuth,
31
+ adminPermission: 'admin:access',
32
+ });
33
+ const permissions = createPermissionsHandler({
34
+ checkPermission: noAuth,
35
+ adminPermission: 'admin:access',
36
+ permissionDefinitions: [],
37
+ categoryDefinitions: [],
38
+ });
39
+ const permissionsId = createPermissionsIdHandler({
40
+ checkPermission: noAuth,
41
+ adminPermission: 'admin:access',
42
+ });
43
+ const categories = createCategoriesHandler({
44
+ checkPermission: noAuth,
45
+ adminPermission: 'admin:access',
46
+ categoryDefinitions: [],
47
+ });
48
+ const categoriesId = createCategoriesIdHandler({
49
+ checkPermission: noAuth,
50
+ adminPermission: 'admin:access',
51
+ });
52
+ const matrix = createMatrixHandler({
53
+ checkPermission: noAuth,
54
+ adminPermission: 'admin:access',
55
+ categoryDefinitions: [],
56
+ });
57
+ const seed = createSeedHandler({
58
+ checkPermission: noAuth,
59
+ adminPermission: 'admin:access',
60
+ permissionDefinitions: [],
61
+ categoryDefinitions: [],
62
+ defaultRoles: {},
63
+ });
64
+ export const usersHandlers = { GET: users.GET, POST: users.POST };
65
+ export const usersIdHandlers = { GET: usersId.GET, PUT: usersId.PUT, DELETE: usersId.DELETE };
66
+ export const rolesHandlers = { GET: roles.GET, POST: roles.POST };
67
+ export const rolesIdHandlers = { GET: rolesId.GET, PUT: rolesId.PUT, DELETE: rolesId.DELETE };
68
+ export const permissionsHandlers = { GET: permissions.GET, POST: permissions.POST };
69
+ export const permissionsIdHandlers = { PUT: permissionsId.PUT, DELETE: permissionsId.DELETE };
70
+ export const categoriesHandlers = { GET: categories.GET, POST: categories.POST };
71
+ export const categoriesIdHandlers = { PUT: categoriesId.PUT, DELETE: categoriesId.DELETE };
72
+ export const matrixHandlers = { GET: matrix.GET, POST: matrix.POST };
73
+ export const seedHandlers = { POST: seed.POST };
74
+ //# sourceMappingURL=route-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-handlers.js","sourceRoot":"","sources":["../../lib/route-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { BaseRepository } from '@mostajs/orm';
2
+ import type { IDialect } from '@mostajs/orm';
3
+ import type { PermissionCategoryDTO } from '../types/index';
4
+ export declare class PermissionCategoryRepository extends BaseRepository<PermissionCategoryDTO> {
5
+ constructor(dialect: IDialect);
6
+ /** Find all sorted by order then name */
7
+ findAllOrdered(): Promise<PermissionCategoryDTO[]>;
8
+ /** Find by name (unique) */
9
+ findByName(name: string): Promise<PermissionCategoryDTO | null>;
10
+ }
11
+ //# sourceMappingURL=permission-category.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-category.repository.d.ts","sourceRoot":"","sources":["../../repositories/permission-category.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAE3D,qBAAa,4BAA6B,SAAQ,cAAc,CAAC,qBAAqB,CAAC;gBACzE,OAAO,EAAE,QAAQ;IAI7B,yCAAyC;IACnC,cAAc,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAIxD,4BAA4B;IACtB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;CAGtE"}
@@ -0,0 +1,18 @@
1
+ // @mostajs/rbac — PermissionCategoryRepository
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ import { BaseRepository } from '@mostajs/orm';
4
+ import { PermissionCategorySchema } from '../schemas/permission-category.schema';
5
+ export class PermissionCategoryRepository extends BaseRepository {
6
+ constructor(dialect) {
7
+ super(PermissionCategorySchema, dialect);
8
+ }
9
+ /** Find all sorted by order then name */
10
+ async findAllOrdered() {
11
+ return this.findAll({}, { sort: { order: 1, name: 1 } });
12
+ }
13
+ /** Find by name (unique) */
14
+ async findByName(name) {
15
+ return this.findOne({ name });
16
+ }
17
+ }
18
+ //# sourceMappingURL=permission-category.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-category.repository.js","sourceRoot":"","sources":["../../repositories/permission-category.repository.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAIhF,MAAM,OAAO,4BAA6B,SAAQ,cAAqC;IACrF,YAAY,OAAiB;QAC3B,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { BaseRepository } from '@mostajs/orm';
2
+ import type { IDialect } from '@mostajs/orm';
3
+ import type { PermissionDTO } from '../types/index';
4
+ export declare class PermissionRepository extends BaseRepository<PermissionDTO> {
5
+ constructor(dialect: IDialect);
6
+ /** Find all sorted by category then name */
7
+ findAllSorted(): Promise<PermissionDTO[]>;
8
+ /** Find by name (unique) */
9
+ findByName(name: string): Promise<PermissionDTO | null>;
10
+ /** Count permissions in a category */
11
+ countByCategory(category: string): Promise<number>;
12
+ }
13
+ //# sourceMappingURL=permission.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.repository.d.ts","sourceRoot":"","sources":["../../repositories/permission.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,qBAAa,oBAAqB,SAAQ,cAAc,CAAC,aAAa,CAAC;gBACzD,OAAO,EAAE,QAAQ;IAI7B,4CAA4C;IACtC,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAI/C,4BAA4B;IACtB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAI7D,sCAAsC;IAChC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGzD"}
@@ -0,0 +1,22 @@
1
+ // @mostajs/rbac — PermissionRepository
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ import { BaseRepository } from '@mostajs/orm';
4
+ import { PermissionSchema } from '../schemas/permission.schema';
5
+ export class PermissionRepository extends BaseRepository {
6
+ constructor(dialect) {
7
+ super(PermissionSchema, dialect);
8
+ }
9
+ /** Find all sorted by category then name */
10
+ async findAllSorted() {
11
+ return this.findAll({}, { sort: { category: 1, name: 1 } });
12
+ }
13
+ /** Find by name (unique) */
14
+ async findByName(name) {
15
+ return this.findOne({ name });
16
+ }
17
+ /** Count permissions in a category */
18
+ async countByCategory(category) {
19
+ return this.count({ category });
20
+ }
21
+ }
22
+ //# sourceMappingURL=permission.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.repository.js","sourceRoot":"","sources":["../../repositories/permission.repository.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAI/D,MAAM,OAAO,oBAAqB,SAAQ,cAA6B;IACrE,YAAY,OAAiB;QAC3B,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;IACjC,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { BaseRepository } from '@mostajs/orm';
2
+ import type { IDialect } from '@mostajs/orm';
3
+ import type { RoleDTO } from '../types/index';
4
+ export declare class RoleRepository extends BaseRepository<RoleDTO> {
5
+ constructor(dialect: IDialect);
6
+ /** Find all roles with permissions populated */
7
+ findAllWithPermissions(): Promise<RoleDTO[]>;
8
+ /** Find a role by name */
9
+ findByName(name: string): Promise<RoleDTO | null>;
10
+ /** Find role by ID with permissions populated */
11
+ findByIdWithPermissions(id: string): Promise<RoleDTO | null>;
12
+ /** Add a permission to a role */
13
+ addPermission(roleId: string, permissionId: string): Promise<RoleDTO | null>;
14
+ /** Remove a permission from a role */
15
+ removePermission(roleId: string, permissionId: string): Promise<RoleDTO | null>;
16
+ /** Remove a permission from ALL roles (cascade) */
17
+ removePermissionFromAll(permissionId: string): Promise<number>;
18
+ }
19
+ //# sourceMappingURL=role.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.repository.d.ts","sourceRoot":"","sources":["../../repositories/role.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7C,qBAAa,cAAe,SAAQ,cAAc,CAAC,OAAO,CAAC;gBAC7C,OAAO,EAAE,QAAQ;IAI7B,gDAAgD;IAC1C,sBAAsB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIlD,0BAA0B;IACpB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIvD,iDAAiD;IAC3C,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIlE,iCAAiC;IAC3B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIlF,sCAAsC;IAChC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIrF,mDAAmD;IAC7C,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMrE"}
@@ -0,0 +1,34 @@
1
+ // @mostajs/rbac — RoleRepository
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ import { BaseRepository } from '@mostajs/orm';
4
+ import { RoleSchema } from '../schemas/role.schema';
5
+ export class RoleRepository extends BaseRepository {
6
+ constructor(dialect) {
7
+ super(RoleSchema, dialect);
8
+ }
9
+ /** Find all roles with permissions populated */
10
+ async findAllWithPermissions() {
11
+ return this.findWithRelations({}, ['permissions']);
12
+ }
13
+ /** Find a role by name */
14
+ async findByName(name) {
15
+ return this.findOne({ name });
16
+ }
17
+ /** Find role by ID with permissions populated */
18
+ async findByIdWithPermissions(id) {
19
+ return this.findByIdWithRelations(id, ['permissions']);
20
+ }
21
+ /** Add a permission to a role */
22
+ async addPermission(roleId, permissionId) {
23
+ return this.addToSet(roleId, 'permissions', permissionId);
24
+ }
25
+ /** Remove a permission from a role */
26
+ async removePermission(roleId, permissionId) {
27
+ return this.pull(roleId, 'permissions', permissionId);
28
+ }
29
+ /** Remove a permission from ALL roles (cascade) */
30
+ async removePermissionFromAll(permissionId) {
31
+ return this.updateMany({ permissions: permissionId }, { $pull: { permissions: permissionId } });
32
+ }
33
+ }
34
+ //# sourceMappingURL=role.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.repository.js","sourceRoot":"","sources":["../../repositories/role.repository.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAInD,MAAM,OAAO,cAAe,SAAQ,cAAuB;IACzD,YAAY,OAAiB;QAC3B,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,sBAAsB;QAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,uBAAuB,CAAC,EAAU;QACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,YAAoB;QACtD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;IAC3D,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,YAAoB;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;IACvD,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,uBAAuB,CAAC,YAAoB;QAChD,OAAO,IAAI,CAAC,UAAU,CACpB,EAAE,WAAW,EAAE,YAAY,EAAS,EACpC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAS,CAChD,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import { BaseRepository } from '@mostajs/orm';
2
+ import type { IDialect, FilterQuery, QueryOptions } from '@mostajs/orm';
3
+ import type { UserDTO } from '../types/index';
4
+ export declare class UserRepository extends BaseRepository<UserDTO> {
5
+ constructor(dialect: IDialect);
6
+ /** List users without password field */
7
+ findAllSafe(filter?: FilterQuery, options?: QueryOptions): Promise<UserDTO[]>;
8
+ /** Find a single user by ID without password */
9
+ findByIdSafe(id: string): Promise<UserDTO | null>;
10
+ /** Find user by email (for authentication) */
11
+ findByEmail(email: string): Promise<UserDTO | null>;
12
+ /** Update lastLoginAt timestamp */
13
+ updateLastLogin(id: string): Promise<void>;
14
+ /** Find user by ID with roles populated */
15
+ findByIdWithRoles(id: string): Promise<UserDTO | null>;
16
+ /** Find all users with roles populated (no password) */
17
+ findAllWithRoles(filter?: FilterQuery, options?: QueryOptions): Promise<UserDTO[]>;
18
+ /** Count users having a specific role */
19
+ countByRole(roleId: string): Promise<number>;
20
+ /** Add a role to a user */
21
+ addRole(userId: string, roleId: string): Promise<UserDTO | null>;
22
+ /** Remove a role from a user */
23
+ removeRole(userId: string, roleId: string): Promise<UserDTO | null>;
24
+ }
25
+ //# sourceMappingURL=user.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.repository.d.ts","sourceRoot":"","sources":["../../repositories/user.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7C,qBAAa,cAAe,SAAQ,cAAc,CAAC,OAAO,CAAC;gBAC7C,OAAO,EAAE,QAAQ;IAI7B,wCAAwC;IAClC,WAAW,CAAC,MAAM,GAAE,WAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvF,gDAAgD;IAC1C,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIvD,8CAA8C;IACxC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIzD,mCAAmC;IAC7B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,2CAA2C;IACrC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI5D,wDAAwD;IAClD,gBAAgB,CAAC,MAAM,GAAE,WAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5F,yCAAyC;IACnC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,2BAA2B;IACrB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAItE,gCAAgC;IAC1B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAG1E"}
@@ -0,0 +1,46 @@
1
+ // @mostajs/rbac — UserRepository
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ import { BaseRepository } from '@mostajs/orm';
4
+ import { UserSchema } from '../schemas/user.schema';
5
+ export class UserRepository extends BaseRepository {
6
+ constructor(dialect) {
7
+ super(UserSchema, dialect);
8
+ }
9
+ /** List users without password field */
10
+ async findAllSafe(filter = {}, options) {
11
+ return this.findAll(filter, Object.assign(Object.assign({}, options), { exclude: ['password'] }));
12
+ }
13
+ /** Find a single user by ID without password */
14
+ async findByIdSafe(id) {
15
+ return this.findById(id, { exclude: ['password'] });
16
+ }
17
+ /** Find user by email (for authentication) */
18
+ async findByEmail(email) {
19
+ return this.findOne({ email: email.toLowerCase() });
20
+ }
21
+ /** Update lastLoginAt timestamp */
22
+ async updateLastLogin(id) {
23
+ await this.update(id, { lastLoginAt: new Date() });
24
+ }
25
+ /** Find user by ID with roles populated */
26
+ async findByIdWithRoles(id) {
27
+ return this.findByIdWithRelations(id, ['roles']);
28
+ }
29
+ /** Find all users with roles populated (no password) */
30
+ async findAllWithRoles(filter = {}, options) {
31
+ return this.findWithRelations(filter, ['roles'], Object.assign(Object.assign({}, options), { exclude: ['password'] }));
32
+ }
33
+ /** Count users having a specific role */
34
+ async countByRole(roleId) {
35
+ return this.count({ roles: roleId });
36
+ }
37
+ /** Add a role to a user */
38
+ async addRole(userId, roleId) {
39
+ return this.addToSet(userId, 'roles', roleId);
40
+ }
41
+ /** Remove a role from a user */
42
+ async removeRole(userId, roleId) {
43
+ return this.pull(userId, 'roles', roleId);
44
+ }
45
+ }
46
+ //# sourceMappingURL=user.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.repository.js","sourceRoot":"","sources":["../../repositories/user.repository.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAInD,MAAM,OAAO,cAAe,SAAQ,cAAuB;IACzD,YAAY,OAAiB;QAC3B,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,WAAW,CAAC,SAAsB,EAAE,EAAE,OAAsB;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,kCAAO,OAAO,KAAE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAG,CAAA;IACpE,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAS,CAAC,CAAA;IAC3D,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,iBAAiB,CAAC,EAAU;QAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,gBAAgB,CAAC,SAAsB,EAAE,EAAE,OAAsB;QACrE,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kCAAO,OAAO,KAAE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAG,CAAA;IACzF,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,MAAc;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ export declare const PermissionCategorySchema: EntitySchema;
3
+ //# sourceMappingURL=permission-category.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-category.schema.d.ts","sourceRoot":"","sources":["../../schemas/permission-category.schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,wBAAwB,EAAE,YAmBtC,CAAA"}
@@ -0,0 +1,18 @@
1
+ export const PermissionCategorySchema = {
2
+ name: 'PermissionCategory',
3
+ collection: 'permission_categories',
4
+ timestamps: true,
5
+ fields: {
6
+ name: { type: 'string', required: true, unique: true, lowercase: true, trim: true },
7
+ label: { type: 'string', required: true, trim: true },
8
+ description: { type: 'string' },
9
+ icon: { type: 'string' },
10
+ order: { type: 'number', default: 0 },
11
+ system: { type: 'boolean', default: false },
12
+ },
13
+ relations: {},
14
+ indexes: [
15
+ { fields: { order: 'asc', name: 'asc' } },
16
+ ],
17
+ };
18
+ //# sourceMappingURL=permission-category.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-category.schema.js","sourceRoot":"","sources":["../../schemas/permission-category.schema.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,wBAAwB,GAAiB;IACpD,IAAI,EAAE,oBAAoB;IAC1B,UAAU,EAAE,uBAAuB;IACnC,UAAU,EAAE,IAAI;IAEhB,MAAM,EAAE;QACN,IAAI,EAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1F,KAAK,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,IAAI,EAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,KAAK,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;QAC3C,MAAM,EAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KACjD;IAED,SAAS,EAAE,EAAE;IAEb,OAAO,EAAE;QACP,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;KAC1C;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ export declare const PermissionSchema: EntitySchema;
3
+ //# sourceMappingURL=permission.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.schema.d.ts","sourceRoot":"","sources":["../../schemas/permission.schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,gBAAgB,EAAE,YAa9B,CAAA"}
@@ -0,0 +1,13 @@
1
+ export const PermissionSchema = {
2
+ name: 'Permission',
3
+ collection: 'permissions',
4
+ timestamps: true,
5
+ fields: {
6
+ name: { type: 'string', required: true, unique: true },
7
+ description: { type: 'string' },
8
+ category: { type: 'string' },
9
+ },
10
+ relations: {},
11
+ indexes: [],
12
+ };
13
+ //# sourceMappingURL=permission.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.schema.js","sourceRoot":"","sources":["../../schemas/permission.schema.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,IAAI;IAEhB,MAAM,EAAE;QACN,IAAI,EAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAC7D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,QAAQ,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChC;IAED,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;CACZ,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ export declare const RoleSchema: EntitySchema;
3
+ //# sourceMappingURL=role.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.schema.d.ts","sourceRoot":"","sources":["../../schemas/role.schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,UAAU,EAAE,YAexB,CAAA"}
@@ -0,0 +1,14 @@
1
+ export const RoleSchema = {
2
+ name: 'Role',
3
+ collection: 'roles',
4
+ timestamps: true,
5
+ fields: {
6
+ name: { type: 'string', required: true, unique: true },
7
+ description: { type: 'string' },
8
+ },
9
+ relations: {
10
+ permissions: { target: 'Permission', type: 'many-to-many', through: 'role_permissions' },
11
+ },
12
+ indexes: [],
13
+ };
14
+ //# sourceMappingURL=role.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.schema.js","sourceRoot":"","sources":["../../schemas/role.schema.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,IAAI;IAEhB,MAAM,EAAE;QACN,IAAI,EAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAC7D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAChC;IAED,SAAS,EAAE;QACT,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,EAAE;KACzF;IAED,OAAO,EAAE,EAAE;CACZ,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ export declare const UserSchema: EntitySchema;
3
+ //# sourceMappingURL=user.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.schema.d.ts","sourceRoot":"","sources":["../../schemas/user.schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,UAAU,EAAE,YAsBxB,CAAA"}
@@ -0,0 +1,21 @@
1
+ export const UserSchema = {
2
+ name: 'User',
3
+ collection: 'users',
4
+ timestamps: true,
5
+ fields: {
6
+ email: { type: 'string', required: true, unique: true, lowercase: true, trim: true },
7
+ password: { type: 'string', required: true },
8
+ firstName: { type: 'string', required: true, trim: true },
9
+ lastName: { type: 'string', required: true, trim: true },
10
+ phone: { type: 'string', trim: true },
11
+ status: { type: 'string', enum: ['active', 'locked', 'disabled'], default: 'active' },
12
+ lastLoginAt: { type: 'date' },
13
+ },
14
+ relations: {
15
+ roles: { target: 'Role', type: 'many-to-many', through: 'user_roles' },
16
+ },
17
+ indexes: [
18
+ { fields: { status: 'asc' } },
19
+ ],
20
+ };
21
+ //# sourceMappingURL=user.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.schema.js","sourceRoot":"","sources":["../../schemas/user.schema.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,IAAI;IAEhB,MAAM,EAAE;QACN,KAAK,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1F,QAAQ,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/C,SAAS,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC3D,QAAQ,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC3D,KAAK,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QAC3C,MAAM,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC1F,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;KAC9B;IAED,SAAS,EAAE;QACT,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE;KACvE;IAED,OAAO,EAAE;QACP,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;KAC9B;CACF,CAAA"}
@@ -1,3 +1,43 @@
1
+ export interface UserDTO {
2
+ id: string;
3
+ email: string;
4
+ password?: string;
5
+ firstName: string;
6
+ lastName: string;
7
+ phone?: string;
8
+ roles: any[];
9
+ status: 'active' | 'locked' | 'disabled';
10
+ lastLoginAt?: string;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ }
14
+ export interface RoleDTO {
15
+ id: string;
16
+ name: string;
17
+ description?: string;
18
+ permissions: any[];
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }
22
+ export interface PermissionDTO {
23
+ id: string;
24
+ name: string;
25
+ description?: string;
26
+ category?: string;
27
+ createdAt: string;
28
+ updatedAt: string;
29
+ }
30
+ export interface PermissionCategoryDTO {
31
+ id: string;
32
+ name: string;
33
+ label: string;
34
+ description?: string;
35
+ icon?: string;
36
+ order: number;
37
+ system: boolean;
38
+ createdAt: string;
39
+ updatedAt: string;
40
+ }
1
41
  export interface User {
2
42
  id: string;
3
43
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
- // UI-specific types for RBAC management components
2
+ // Types for RBAC entities, DTOs, definitions, UI data shapes
3
3
  export {};
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,mDAAmD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,+DAA+D"}