@mostajs/rbac 1.0.10 → 2.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 (45) hide show
  1. package/dist/api/categories-id.d.ts.map +1 -1
  2. package/dist/api/categories-id.js +3 -6
  3. package/dist/api/categories-id.js.map +1 -1
  4. package/dist/api/categories.d.ts.map +1 -1
  5. package/dist/api/categories.js +3 -4
  6. package/dist/api/categories.js.map +1 -1
  7. package/dist/api/matrix.d.ts.map +1 -1
  8. package/dist/api/matrix.js +3 -10
  9. package/dist/api/matrix.js.map +1 -1
  10. package/dist/api/permissions-id.d.ts.map +1 -1
  11. package/dist/api/permissions-id.js +3 -6
  12. package/dist/api/permissions-id.js.map +1 -1
  13. package/dist/api/permissions.d.ts.map +1 -1
  14. package/dist/api/permissions.js +3 -9
  15. package/dist/api/permissions.js.map +1 -1
  16. package/dist/api/roles-id.d.ts.map +1 -1
  17. package/dist/api/roles-id.js +4 -8
  18. package/dist/api/roles-id.js.map +1 -1
  19. package/dist/api/roles.d.ts.map +1 -1
  20. package/dist/api/roles.js +3 -6
  21. package/dist/api/roles.js.map +1 -1
  22. package/dist/api/seed.d.ts.map +1 -1
  23. package/dist/api/seed.js +2 -7
  24. package/dist/api/seed.js.map +1 -1
  25. package/dist/api/users-id.d.ts.map +1 -1
  26. package/dist/api/users-id.js +5 -7
  27. package/dist/api/users-id.js.map +1 -1
  28. package/dist/api/users.d.ts.map +1 -1
  29. package/dist/api/users.js +3 -6
  30. package/dist/api/users.js.map +1 -1
  31. package/dist/lib/data-mode.d.ts +5 -0
  32. package/dist/lib/data-mode.d.ts.map +1 -0
  33. package/dist/lib/data-mode.js +11 -0
  34. package/dist/lib/data-mode.js.map +1 -0
  35. package/dist/lib/permissions-server.d.ts.map +1 -1
  36. package/dist/lib/permissions-server.js +2 -3
  37. package/dist/lib/permissions-server.js.map +1 -1
  38. package/dist/lib/rbac-seed.d.ts.map +1 -1
  39. package/dist/lib/rbac-seed.js +2 -8
  40. package/dist/lib/rbac-seed.js.map +1 -1
  41. package/dist/lib/repos-factory.d.ts +66 -0
  42. package/dist/lib/repos-factory.d.ts.map +1 -0
  43. package/dist/lib/repos-factory.js +126 -0
  44. package/dist/lib/repos-factory.js.map +1 -0
  45. package/package.json +11 -1
@@ -1 +1 @@
1
- {"version":3,"file":"categories-id.d.ts","sourceRoot":"","sources":["../../api/categories-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAavD,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB;eAGjD,WAAW,cAAc;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBAoCzD,WAAW,cAAc;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EAsCxF"}
1
+ {"version":3,"file":"categories-id.d.ts","sourceRoot":"","sources":["../../api/categories-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAWvD,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,yBAAyB;eAGjD,WAAW,cAAc;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBAoCzD,WAAW,cAAc;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EAqCxF"}
@@ -1,9 +1,7 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: PUT/DELETE /admin/categories/[id]
3
3
  import { NextResponse } from 'next/server';
4
- import { PermissionCategoryRepository } from '../repositories/permission-category.repository';
5
- import { PermissionRepository } from '../repositories/permission.repository';
6
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
7
5
  import { z } from 'zod';
8
6
  const updateCategorySchema = z.object({
9
7
  label: z.string().min(1).optional(),
@@ -23,7 +21,7 @@ export function createCategoriesIdHandler(config) {
23
21
  if (!parsed.success) {
24
22
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Donnees invalides', details: parsed.error.flatten() } }, { status: 400 });
25
23
  }
26
- const catRepo = new PermissionCategoryRepository(await getDialect());
24
+ const { categories: catRepo } = await getRbacRepos();
27
25
  const category = await catRepo.findById(id);
28
26
  if (!category) {
29
27
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Categorie introuvable' } }, { status: 404 });
@@ -45,7 +43,7 @@ export function createCategoriesIdHandler(config) {
45
43
  if (error)
46
44
  return error;
47
45
  const { id } = await params;
48
- const catRepo = new PermissionCategoryRepository(await getDialect());
46
+ const { categories: catRepo, permissions: pRepo } = await getRbacRepos();
49
47
  const category = await catRepo.findById(id);
50
48
  if (!category) {
51
49
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Categorie introuvable' } }, { status: 404 });
@@ -54,7 +52,6 @@ export function createCategoriesIdHandler(config) {
54
52
  return NextResponse.json({ error: { code: 'SYSTEM_PROTECTED', message: 'Les categories systeme ne peuvent pas etre supprimees' } }, { status: 403 });
55
53
  }
56
54
  // Check if permissions are using this category
57
- const pRepo = new PermissionRepository(await getDialect());
58
55
  const permCount = await pRepo.count({ category: category.name });
59
56
  if (permCount > 0) {
60
57
  return NextResponse.json({ error: { code: 'IN_USE', message: `Impossible : ${permCount} permission(s) utilisent cette categorie` } }, { status: 409 });
@@ -1 +1 @@
1
- {"version":3,"file":"categories-id.js","sourceRoot":"","sources":["../../api/categories-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"categories-id.js","sourceRoot":"","sources":["../../api/categories-id.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../api/categories.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAIvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAUlD,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB;;gBA4B5C,WAAW;EAsCrC"}
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../api/categories.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAUlD,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB;;gBA4B5C,WAAW;EAsCrC"}
@@ -1,8 +1,7 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: GET/POST /admin/categories
3
3
  import { NextResponse } from 'next/server';
4
- import { PermissionCategoryRepository } from '../repositories/permission-category.repository';
5
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
6
5
  import { z } from 'zod';
7
6
  const createCategorySchema = z.object({
8
7
  name: z.string().min(1).regex(/^[a-z][a-z0-9_]*$/, 'Format requis : minuscules, chiffres et underscores'),
@@ -17,7 +16,7 @@ export function createCategoriesHandler(config) {
17
16
  const { error } = await checkPermission(adminPermission);
18
17
  if (error)
19
18
  return error;
20
- const repo = new PermissionCategoryRepository(await getDialect());
19
+ const { categories: repo } = await getRbacRepos();
21
20
  let categories = await repo.findAllOrdered();
22
21
  // Fallback: if DB is empty, return hardcoded definitions
23
22
  if (categories.length === 0) {
@@ -45,7 +44,7 @@ export function createCategoriesHandler(config) {
45
44
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Donnees invalides', details: parsed.error.flatten() } }, { status: 400 });
46
45
  }
47
46
  const { name, label, description, icon, order } = parsed.data;
48
- const repo = new PermissionCategoryRepository(await getDialect());
47
+ const { categories: repo } = await getRbacRepos();
49
48
  const existing = await repo.findByName(name);
50
49
  if (existing) {
51
50
  return NextResponse.json({ error: { code: 'DUPLICATE', message: 'Une categorie avec ce nom existe deja' } }, { status: 409 });
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../api/categories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../api/categories.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../api/matrix.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAMvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAElD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB;;gBA6EpC,WAAW;EAmCrC"}
1
+ {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../api/matrix.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAElD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB;;gBAyEpC,WAAW;EAmCrC"}
@@ -1,10 +1,7 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: GET/POST /admin/permissions/matrix
3
3
  import { NextResponse } from 'next/server';
4
- import { PermissionRepository } from '../repositories/permission.repository';
5
- import { RoleRepository } from '../repositories/role.repository';
6
- import { PermissionCategoryRepository } from '../repositories/permission-category.repository';
7
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
8
5
  import { z } from 'zod';
9
6
  export function createMatrixHandler(config) {
10
7
  const { checkPermission, adminPermission, categoryDefinitions = [] } = config;
@@ -12,11 +9,7 @@ export function createMatrixHandler(config) {
12
9
  const { error } = await checkPermission(adminPermission);
13
10
  if (error)
14
11
  return error;
15
- const [pRepo, rRepo, catRepo] = await Promise.all([
16
- getDialect().then(d => new PermissionRepository(d)),
17
- getDialect().then(d => new RoleRepository(d)),
18
- getDialect().then(d => new PermissionCategoryRepository(d)),
19
- ]);
12
+ const { permissions: pRepo, roles: rRepo, categories: catRepo } = await getRbacRepos();
20
13
  const [permissions, roles, dbCategories] = await Promise.all([
21
14
  pRepo.findAllSorted(),
22
15
  rRepo.findAllWithPermissions(),
@@ -85,7 +78,7 @@ export function createMatrixHandler(config) {
85
78
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Données invalides', details: parsed.error.flatten() } }, { status: 400 });
86
79
  }
87
80
  const { changes } = parsed.data;
88
- const rRepo = new RoleRepository(await getDialect());
81
+ const { roles: rRepo } = await getRbacRepos();
89
82
  let applied = 0;
90
83
  for (const change of changes) {
91
84
  const { roleId, permissionId, granted } = change;
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../api/matrix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../api/matrix.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-id.d.ts","sourceRoot":"","sources":["../../api/permissions-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAWvD,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B;eAIpE,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBA+B1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EA0BlD"}
1
+ {"version":3,"file":"permissions-id.d.ts","sourceRoot":"","sources":["../../api/permissions-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AASvD,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B;eAIpE,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBA+B1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EAyBlD"}
@@ -1,9 +1,7 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: PUT/DELETE /admin/permissions/[id]
3
3
  import { NextResponse } from 'next/server';
4
- import { PermissionRepository } from '../repositories/permission.repository';
5
- import { RoleRepository } from '../repositories/role.repository';
6
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
7
5
  import { z } from 'zod';
8
6
  const updatePermissionSchema = z.object({
9
7
  description: z.string().optional(),
@@ -21,7 +19,7 @@ export function createPermissionsIdHandler(config) {
21
19
  if (!parsed.success) {
22
20
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Données invalides', details: parsed.error.flatten() } }, { status: 400 });
23
21
  }
24
- const pRepo = new PermissionRepository(await getDialect());
22
+ const { permissions: pRepo } = await getRbacRepos();
25
23
  const permission = await pRepo.update(id, parsed.data);
26
24
  if (!permission) {
27
25
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Permission non trouvée' } }, { status: 404 });
@@ -33,13 +31,12 @@ export function createPermissionsIdHandler(config) {
33
31
  if (error)
34
32
  return error;
35
33
  const { id } = await params;
36
- const pRepo = new PermissionRepository(await getDialect());
34
+ const { permissions: pRepo, roles: rRepo } = await getRbacRepos();
37
35
  const permission = await pRepo.findById(id);
38
36
  if (!permission) {
39
37
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Permission non trouvée' } }, { status: 404 });
40
38
  }
41
39
  // Remove permission from all roles that have it
42
- const rRepo = new RoleRepository(await getDialect());
43
40
  await rRepo.removePermissionFromAll(id);
44
41
  await pRepo.delete(id);
45
42
  return NextResponse.json({ data: { message: 'Permission supprimée' } });
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-id.js","sourceRoot":"","sources":["../../api/permissions-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions-id.js","sourceRoot":"","sources":["../../api/permissions-id.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../api/permissions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAMvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAQxE,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAC9C,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB;;gBAoE9C,WAAW;EAmDrC"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../api/permissions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAQxE,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAC9C,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC3C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB;;gBAiE9C,WAAW;EAkDrC"}
@@ -1,10 +1,7 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: GET/POST /admin/permissions
3
3
  import { NextResponse } from 'next/server';
4
- import { PermissionRepository } from '../repositories/permission.repository';
5
- import { RoleRepository } from '../repositories/role.repository';
6
- import { PermissionCategoryRepository } from '../repositories/permission-category.repository';
7
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
8
5
  import { z } from 'zod';
9
6
  const createPermissionSchema = z.object({
10
7
  name: z.string().min(1).regex(/^[a-z_]+:[a-z_]+$/, 'Format requis : categorie:action'),
@@ -19,7 +16,7 @@ export function createPermissionsHandler(config) {
19
16
  if (error)
20
17
  return error;
21
18
  // Read category labels from DB, fallback to hardcoded
22
- const catRepo = new PermissionCategoryRepository(await getDialect());
19
+ const { categories: catRepo, permissions: pRepo, roles: rRepo } = await getRbacRepos();
23
20
  const dbCategories = await catRepo.findAllOrdered();
24
21
  const categoryLabels = {};
25
22
  if (dbCategories.length > 0) {
@@ -32,7 +29,6 @@ export function createPermissionsHandler(config) {
32
29
  categoryLabels[cat.name] = cat.label;
33
30
  }
34
31
  }
35
- const pRepo = new PermissionRepository(await getDialect());
36
32
  let permissions = await pRepo.findAllSorted();
37
33
  // Fallback: if DB is empty, return hardcoded definitions
38
34
  if (permissions.length === 0) {
@@ -46,7 +42,6 @@ export function createPermissionsHandler(config) {
46
42
  return NextResponse.json({ data: fallback, categories: categoryLabels });
47
43
  }
48
44
  // Count roles per permission
49
- const rRepo = new RoleRepository(await getDialect());
50
45
  const roles = await rRepo.findAllWithPermissions();
51
46
  const permRoleCount = {};
52
47
  for (const role of roles) {
@@ -76,7 +71,7 @@ export function createPermissionsHandler(config) {
76
71
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Données invalides', details: parsed.error.flatten() } }, { status: 400 });
77
72
  }
78
73
  const { name, description, category } = parsed.data;
79
- const pRepo = new PermissionRepository(await getDialect());
74
+ const { permissions: pRepo, categories: catRepo } = await getRbacRepos();
80
75
  const existing = await pRepo.findByName(name);
81
76
  if (existing) {
82
77
  return NextResponse.json({ error: { code: 'DUPLICATE', message: 'Une permission avec ce nom existe déjà' } }, { status: 409 });
@@ -84,7 +79,6 @@ export function createPermissionsHandler(config) {
84
79
  // Auto-derive category from name if not provided
85
80
  const derivedCategory = category || name.split(':')[0];
86
81
  // Validate category exists in DB or in fallback definitions
87
- const catRepo = new PermissionCategoryRepository(await getDialect());
88
82
  const catExists = await catRepo.findByName(derivedCategory);
89
83
  if (!catExists) {
90
84
  const fallbackExists = categoryDefinitions.some((c) => c.name === derivedCategory);
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../api/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../api/permissions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles-id.d.ts","sourceRoot":"","sources":["../../api/roles-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAYvD,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB;eAIxD,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;eAuB1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBA2D1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EAsClD"}
1
+ {"version":3,"file":"roles-id.d.ts","sourceRoot":"","sources":["../../api/roles-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAUvD,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB;eAIxD,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;eAqB1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBA2D1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EAoClD"}
@@ -1,9 +1,7 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: GET/PUT/DELETE /admin/roles/[id]
3
3
  import { NextResponse } from 'next/server';
4
- import { RoleRepository } from '../repositories/role.repository';
5
- import { UserRepository } from '../repositories/user.repository';
6
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
7
5
  import { z } from 'zod';
8
6
  const updateRoleSchema = z.object({
9
7
  name: z.string().min(1).regex(/^[a-z][a-z0-9_]*$/).optional(),
@@ -17,12 +15,11 @@ export function createRolesIdHandler(config) {
17
15
  if (error)
18
16
  return error;
19
17
  const { id } = await params;
20
- const rRepo = new RoleRepository(await getDialect());
18
+ const { roles: rRepo, users: uRepo } = await getRbacRepos();
21
19
  const role = await rRepo.findByIdWithPermissions(id);
22
20
  if (!role) {
23
21
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Rôle non trouvé' } }, { status: 404 });
24
22
  }
25
- const uRepo = new UserRepository(await getDialect());
26
23
  const userCount = await uRepo.count({ role: role.name });
27
24
  return NextResponse.json({ data: Object.assign(Object.assign({}, role), { userCount }) });
28
25
  }
@@ -36,7 +33,7 @@ export function createRolesIdHandler(config) {
36
33
  if (!parsed.success) {
37
34
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Données invalides', details: parsed.error.flatten() } }, { status: 400 });
38
35
  }
39
- const rRepo = new RoleRepository(await getDialect());
36
+ const { roles: rRepo } = await getRbacRepos();
40
37
  const existingRole = await rRepo.findById(id);
41
38
  if (!existingRole) {
42
39
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Rôle non trouvé' } }, { status: 404 });
@@ -69,7 +66,7 @@ export function createRolesIdHandler(config) {
69
66
  if (error)
70
67
  return error;
71
68
  const { id } = await params;
72
- const rRepo = new RoleRepository(await getDialect());
69
+ const { roles: rRepo, users: uRepo } = await getRbacRepos();
73
70
  const role = await rRepo.findById(id);
74
71
  if (!role) {
75
72
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Rôle non trouvé' } }, { status: 404 });
@@ -77,7 +74,6 @@ export function createRolesIdHandler(config) {
77
74
  if (systemRoles.includes(role.name)) {
78
75
  return NextResponse.json({ error: { code: 'FORBIDDEN', message: 'Impossible de supprimer un rôle système' } }, { status: 403 });
79
76
  }
80
- const uRepo = new UserRepository(await getDialect());
81
77
  const userCount = await uRepo.count({ role: role.name });
82
78
  if (userCount > 0) {
83
79
  return NextResponse.json({ error: { code: 'CONFLICT', message: `Impossible de supprimer : ${userCount} utilisateur(s) utilisent ce rôle` } }, { status: 409 });
@@ -1 +1 @@
1
- {"version":3,"file":"roles-id.js","sourceRoot":"","sources":["../../api/roles-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roles-id.js","sourceRoot":"","sources":["../../api/roles-id.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../api/roles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAQ9C,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CAC9C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;;gBAoClC,WAAW;EAqCrC"}
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../api/roles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAQ9C,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CAC9C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;;gBAkClC,WAAW;EAqCrC"}
package/dist/api/roles.js CHANGED
@@ -1,9 +1,7 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: GET/POST /admin/roles
3
3
  import { NextResponse } from 'next/server';
4
- import { RoleRepository } from '../repositories/role.repository';
5
- import { UserRepository } from '../repositories/user.repository';
6
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
7
5
  import { z } from 'zod';
8
6
  const createRoleSchema = z.object({
9
7
  name: z.string().min(1).regex(/^[a-z][a-z0-9_]*$/, 'Le nom doit être en minuscules (lettres, chiffres, underscores)'),
@@ -16,7 +14,7 @@ export function createRolesHandler(config) {
16
14
  const { error } = await checkPermission(adminPermission);
17
15
  if (error)
18
16
  return error;
19
- const rRepo = new RoleRepository(await getDialect());
17
+ const { roles: rRepo, users: uRepo } = await getRbacRepos();
20
18
  let roles = await rRepo.findAllWithPermissions();
21
19
  // Fallback: if DB is empty, return hardcoded defaults
22
20
  if (roles.length === 0) {
@@ -30,7 +28,6 @@ export function createRolesHandler(config) {
30
28
  }));
31
29
  return NextResponse.json({ data: fallbackRoles });
32
30
  }
33
- const uRepo = new UserRepository(await getDialect());
34
31
  const allUsers = await uRepo.findAllSafe();
35
32
  const rolesWithCount = roles.map((r) => (Object.assign(Object.assign({}, r), { userCount: allUsers.filter((u) => {
36
33
  const userRoles = Array.isArray(u.roles) ? u.roles : [];
@@ -48,7 +45,7 @@ export function createRolesHandler(config) {
48
45
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Données invalides', details: parsed.error.flatten() } }, { status: 400 });
49
46
  }
50
47
  const { name, description, permissionIds } = parsed.data;
51
- const rRepo = new RoleRepository(await getDialect());
48
+ const { roles: rRepo } = await getRbacRepos();
52
49
  const existing = await rRepo.findByName(name);
53
50
  if (existing) {
54
51
  return NextResponse.json({ error: { code: 'DUPLICATE', message: 'Un rôle avec ce nom existe déjà' } }, { status: 409 });
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../api/roles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../api/roles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../api/seed.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAExF,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC5C,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;CAC1C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB;;EA6D1D"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../api/seed.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAExF,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC5C,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;CAC1C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB;;EA2D1D"}
package/dist/api/seed.js CHANGED
@@ -1,19 +1,14 @@
1
1
  // Author: Dr Hamid MADANI drmdh@msn.com
2
2
  // RBAC API handler: POST /admin/permissions/seed
3
3
  import { NextResponse } from 'next/server';
4
- import { PermissionRepository } from '../repositories/permission.repository';
5
- import { RoleRepository } from '../repositories/role.repository';
6
- import { PermissionCategoryRepository } from '../repositories/permission-category.repository';
7
- import { getDialect } from '@mostajs/orm';
4
+ import { getRbacRepos } from '../lib/repos-factory';
8
5
  export function createSeedHandler(config) {
9
6
  const { checkPermission, adminPermission, permissionDefinitions, defaultRoles, categoryDefinitions, } = config;
10
7
  async function POST() {
11
8
  const { error } = await checkPermission(adminPermission);
12
9
  if (error)
13
10
  return error;
14
- const catRepo = new PermissionCategoryRepository(await getDialect());
15
- const pRepo = new PermissionRepository(await getDialect());
16
- const rRepo = new RoleRepository(await getDialect());
11
+ const { categories: catRepo, permissions: pRepo, roles: rRepo } = await getRbacRepos();
17
12
  // Upsert categories
18
13
  for (const catDef of categoryDefinitions) {
19
14
  await catRepo.upsert({ name: catDef.name }, catDef);
@@ -1 +1 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../api/seed.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAWzC,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,EACJ,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,GACpB,GAAG,MAAM,CAAA;IAEV,KAAK,UAAU,IAAI;QACjB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,CAAA;QACxD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;QAEvB,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;QACpE,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;QAC1D,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;QAEpD,oBAAoB;QACpB,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;YACzC,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAa,CAAC,CAAA;QAC5D,CAAC;QAED,yBAAyB;QACzB,MAAM,aAAa,GAA2B,EAAE,CAAA;QAChD,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAC7B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACnB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5E,CAAA;YACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;QACpC,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAa,EAAE,CAAA;QACjC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW;iBACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;iBAClC,MAAM,CAAC,OAAO,CAAC,CAAA;YAElB,MAAM,KAAK,CAAC,MAAM,CAChB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EACtB;gBACE,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,aAAa;aAC3B,CACF,CAAA;YACD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE;gBACJ,UAAU,EAAE,mBAAmB,CAAC,MAAM;gBACtC,WAAW,EAAE,qBAAqB,CAAC,MAAM;gBACzC,KAAK,EAAE,YAAY,CAAC,MAAM;gBAC1B,OAAO,EAAE,GAAG,mBAAmB,CAAC,MAAM,gBAAgB,qBAAqB,CAAC,MAAM,mBAAmB,YAAY,CAAC,MAAM,oBAAoB;aAC7I;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../api/seed.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAWnD,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,EACJ,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,GACpB,GAAG,MAAM,CAAA;IAEV,KAAK,UAAU,IAAI;QACjB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,CAAA;QACxD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;QAEvB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,EAAE,CAAA;QAEtF,oBAAoB;QACpB,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;YACzC,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAa,CAAC,CAAA;QAC5D,CAAC;QAED,yBAAyB;QACzB,MAAM,aAAa,GAA2B,EAAE,CAAA;QAChD,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAO,KAAa,CAAC,MAAM,CACtC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACnB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5E,CAAA;YACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;QACpC,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAa,EAAE,CAAA;QACjC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW;iBACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;iBAClC,MAAM,CAAC,OAAO,CAAC,CAAA;YAElB,MAAO,KAAa,CAAC,MAAM,CACzB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EACtB;gBACE,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,aAAa;aAC3B,CACF,CAAA;YACD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE;gBACJ,UAAU,EAAE,mBAAmB,CAAC,MAAM;gBACtC,WAAW,EAAE,qBAAqB,CAAC,MAAM;gBACzC,KAAK,EAAE,YAAY,CAAC,MAAM;gBAC1B,OAAO,EAAE,GAAG,mBAAmB,CAAC,MAAM,gBAAgB,qBAAqB,CAAC,MAAM,mBAAmB,YAAY,CAAC,MAAM,oBAAoB;aAC7I;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAA;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"users-id.d.ts","sourceRoot":"","sources":["../../api/users-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAiBvD,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC5D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB;eASxD,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;eAoB1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBAuD1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EA8BlD"}
1
+ {"version":3,"file":"users-id.d.ts","sourceRoot":"","sources":["../../api/users-id.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAevD,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC5D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB;eASxD,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;eAoB1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;kBAuD1C,WAAW,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;EA8BlD"}
@@ -13,9 +13,7 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  // RBAC API handler: GET/PUT/DELETE /users/[id]
14
14
  import { NextResponse } from 'next/server';
15
15
  import { hashPassword } from '@mostajs/auth/lib/password';
16
- import { UserRepository } from '../repositories/user.repository';
17
- import { RoleRepository } from '../repositories/role.repository';
18
- import { getDialect } from '@mostajs/orm';
16
+ import { getRbacRepos } from '../lib/repos-factory';
19
17
  import { z } from 'zod';
20
18
  const updateUserSchema = z.object({
21
19
  email: z.string().email().optional(),
@@ -33,7 +31,7 @@ export function createUsersIdHandler(config) {
33
31
  if (error)
34
32
  return error;
35
33
  const { id } = await params;
36
- const repo = new UserRepository(await getDialect());
34
+ const repo = (await getRbacRepos()).users;
37
35
  const user = await repo.findByIdSafe(id);
38
36
  if (!user) {
39
37
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Utilisateur non trouvé' } }, { status: 404 });
@@ -56,7 +54,7 @@ export function createUsersIdHandler(config) {
56
54
  }
57
55
  if (updateData.role) {
58
56
  if (!knownRoles.includes(updateData.role)) {
59
- const rRepo = new RoleRepository(await getDialect());
57
+ const rRepo = (await getRbacRepos()).roles;
60
58
  const dbRole = await rRepo.findByName(updateData.role);
61
59
  if (!dbRole) {
62
60
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: `Le rôle "${updateData.role}" n'existe pas` } }, { status: 400 });
@@ -66,7 +64,7 @@ export function createUsersIdHandler(config) {
66
64
  updateData.permissions = await getPermissionsForRole(updateData.role);
67
65
  }
68
66
  }
69
- const repo = new UserRepository(await getDialect());
67
+ const repo = (await getRbacRepos()).users;
70
68
  const user = await repo.update(id, updateData);
71
69
  if (!user) {
72
70
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Utilisateur non trouvé' } }, { status: 404 });
@@ -82,7 +80,7 @@ export function createUsersIdHandler(config) {
82
80
  if (session.user.id === id) {
83
81
  return NextResponse.json({ error: { code: 'FORBIDDEN', message: 'Impossible de supprimer votre propre compte' } }, { status: 403 });
84
82
  }
85
- const repo = new UserRepository(await getDialect());
83
+ const repo = (await getRbacRepos()).users;
86
84
  const user = await repo.update(id, { status: 'disabled' });
87
85
  if (!user) {
88
86
  return NextResponse.json({ error: { code: 'NOT_FOUND', message: 'Utilisateur non trouvé' } }, { status: 404 });
@@ -1 +1 @@
1
- {"version":3,"file":"users-id.js","sourceRoot":"","sources":["../../api/users-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"users-id.js","sourceRoot":"","sources":["../../api/users-id.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../api/users.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAgBvD,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;;gBAoBlC,WAAW;EAoErC"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../api/users.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAcvD,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IACxF,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;;gBAoBlC,WAAW;EAmErC"}
package/dist/api/users.js CHANGED
@@ -13,9 +13,7 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  // RBAC API handler: GET/POST /users
14
14
  import { NextResponse } from 'next/server';
15
15
  import { hashPassword } from '@mostajs/auth/lib/password';
16
- import { UserRepository } from '../repositories/user.repository';
17
- import { RoleRepository } from '../repositories/role.repository';
18
- import { getDialect } from '@mostajs/orm';
16
+ import { getRbacRepos } from '../lib/repos-factory';
19
17
  import { z } from 'zod';
20
18
  const createUserSchema = z.object({
21
19
  email: z.string().email(),
@@ -31,7 +29,7 @@ export function createUsersHandler(config) {
31
29
  const { error } = await checkPermission(adminPermission);
32
30
  if (error)
33
31
  return error;
34
- const repo = new UserRepository(await getDialect());
32
+ const { users: repo } = await getRbacRepos();
35
33
  const users = await repo.findAllSafe({}, { sort: { createdAt: -1 } });
36
34
  return NextResponse.json({ data: users });
37
35
  }
@@ -45,14 +43,13 @@ export function createUsersHandler(config) {
45
43
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: 'Données invalides', details: parsed.error.flatten() } }, { status: 400 });
46
44
  }
47
45
  const { email, password, firstName, lastName, phone, role } = parsed.data;
48
- const repo = new UserRepository(await getDialect());
46
+ const { users: repo, roles: rRepo } = await getRbacRepos();
49
47
  const existing = await repo.findByEmail(email);
50
48
  if (existing) {
51
49
  return NextResponse.json({ error: { code: 'DUPLICATE', message: 'Cet email est déjà utilisé' } }, { status: 409 });
52
50
  }
53
51
  // Validate role exists (known constants or DB)
54
52
  if (!knownRoles.includes(role)) {
55
- const rRepo = new RoleRepository(await getDialect());
56
53
  const dbRole = await rRepo.findByName(role);
57
54
  if (!dbRole) {
58
55
  return NextResponse.json({ error: { code: 'VALIDATION_ERROR', message: `Le rôle "${role}" n'existe pas` } }, { status: 400 });
@@ -1 +1 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../api/users.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../api/users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Returns 'orm' or 'net' based on MOSTA_DATA env variable. Default: 'orm' */
2
+ export declare function getDataMode(): 'orm' | 'net';
3
+ /** Returns true if running in NET mode (data accessed via remote NET server) */
4
+ export declare function isNetMode(): boolean;
5
+ //# sourceMappingURL=data-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-mode.d.ts","sourceRoot":"","sources":["../../lib/data-mode.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,wBAAgB,WAAW,IAAI,KAAK,GAAG,KAAK,CAE3C;AAED,gFAAgF;AAChF,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
@@ -0,0 +1,11 @@
1
+ // data-mode.ts — Helper for dual ORM/NET mode
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ /** Returns 'orm' or 'net' based on MOSTA_DATA env variable. Default: 'orm' */
4
+ export function getDataMode() {
5
+ return (process.env.MOSTA_DATA === 'net') ? 'net' : 'orm';
6
+ }
7
+ /** Returns true if running in NET mode (data accessed via remote NET server) */
8
+ export function isNetMode() {
9
+ return process.env.MOSTA_DATA === 'net';
10
+ }
11
+ //# sourceMappingURL=data-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-mode.js","sourceRoot":"","sources":["../../lib/data-mode.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,wCAAwC;AAExC,8EAA8E;AAC9E,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC;AAC1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-server.d.ts","sourceRoot":"","sources":["../../lib/permissions-server.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB"}
1
+ {"version":3,"file":"permissions-server.d.ts","sourceRoot":"","sources":["../../lib/permissions-server.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB"}
@@ -1,14 +1,13 @@
1
1
  // @mostajs/rbac — Server-side permission lookup (DO NOT import client-side)
2
2
  // Author: Dr Hamid MADANI drmdh@msn.com
3
- import { getDialect } from '@mostajs/orm';
4
- import { RoleRepository } from '../repositories/role.repository';
3
+ import { getRbacRepos } from './repos-factory';
5
4
  /**
6
5
  * Resolve permissions for a role by querying the database.
7
6
  * Falls back to the provided static map if DB lookup fails.
8
7
  */
9
8
  export async function getPermissionsForRoleFromDB(role, fallbackMap) {
10
9
  try {
11
- const repo = new RoleRepository(await getDialect());
10
+ const { roles: repo } = await getRbacRepos();
12
11
  const dbRole = await repo.findByName(role);
13
12
  if (dbRole) {
14
13
  const roleWithPerms = await repo.findByIdWithPermissions(dbRole.id);
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-server.js","sourceRoot":"","sources":["../../lib/permissions-server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAEhE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,WAAsC;IAEtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACnE,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,KAAK,aAAa,CAAC,WAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClF,OAAQ,aAAa,CAAC,WAAqB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CACzD,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CACxC,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,IAAI,CAAC,KAAI,EAAE,CAAA;AAClC,CAAC"}
1
+ {"version":3,"file":"permissions-server.js","sourceRoot":"","sources":["../../lib/permissions-server.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wCAAwC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,WAAsC;IAEtC,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,EAAE,CAAA;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACnE,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,KAAK,aAAa,CAAC,WAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClF,OAAQ,aAAa,CAAC,WAAqB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CACzD,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CACxC,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,IAAI,CAAC,KAAI,EAAE,CAAA;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rbac-seed.d.ts","sourceRoot":"","sources":["../../lib/rbac-seed.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE9F,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,kBAAkB,EAAE,CAAA;IAChC,WAAW,EAAE,oBAAoB,EAAE,CAAA;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC;IAChE,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAC,CAsCD"}
1
+ {"version":3,"file":"rbac-seed.d.ts","sourceRoot":"","sources":["../../lib/rbac-seed.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE9F,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,kBAAkB,EAAE,CAAA;IAChC,WAAW,EAAE,oBAAoB,EAAE,CAAA;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC;IAChE,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAC,CAmCD"}
@@ -1,18 +1,12 @@
1
1
  // @mostajs/rbac — RBAC Seed function
2
2
  // Author: Dr Hamid MADANI drmdh@msn.com
3
- import { getDialect } from '@mostajs/orm';
4
- import { PermissionCategoryRepository } from '../repositories/permission-category.repository';
5
- import { PermissionRepository } from '../repositories/permission.repository';
6
- import { RoleRepository } from '../repositories/role.repository';
3
+ import { getRbacRepos } from './repos-factory';
7
4
  /**
8
5
  * Idempotent seed of categories, permissions and roles.
9
6
  * Uses upsert — safe to call multiple times.
10
7
  */
11
8
  export async function seedRBAC(options) {
12
- const dialect = await getDialect();
13
- const catRepo = new PermissionCategoryRepository(dialect);
14
- const permRepo = new PermissionRepository(dialect);
15
- const roleRepo = new RoleRepository(dialect);
9
+ const { categories: catRepo, permissions: permRepo, roles: roleRepo } = await getRbacRepos();
16
10
  // 1. Upsert categories
17
11
  for (const cat of options.categories) {
18
12
  await catRepo.upsert({ name: cat.name }, cat);
@@ -1 +1 @@
1
- {"version":3,"file":"rbac-seed.js","sourceRoot":"","sources":["../../lib/rbac-seed.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAShE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IAKrD,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAA;IAClC,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;IAE5C,uBAAuB;IACvB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAA2B,EAAE,CAAA;IAChD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAChC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACnB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5E,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;IACpC,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW;aACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAClC,MAAM,CAAC,OAAO,CAAC,CAAA;QAElB,MAAM,QAAQ,CAAC,MAAM,CACnB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EACtB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,CACrF,CAAA;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;QACxC,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;QAC3C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM;KAC7C,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"rbac-seed.js","sourceRoot":"","sources":["../../lib/rbac-seed.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,wCAAwC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAS9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IAKrD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,EAAE,CAAA;IAE5F,uBAAuB;IACvB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAA2B,EAAE,CAAA;IAChD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAO,QAAgB,CAAC,MAAM,CACzC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACnB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5E,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;IACpC,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW;aACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAClC,MAAM,CAAC,OAAO,CAAC,CAAA;QAElB,MAAO,QAAgB,CAAC,MAAM,CAC5B,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EACtB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,CACrF,CAAA;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;QACxC,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;QAC3C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM;KAC7C,CAAA;AACH,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { UserDTO, RoleDTO, PermissionDTO, PermissionCategoryDTO } from '../types/index.js';
2
+ export interface IUserRepository {
3
+ findAllSafe(filter?: any, options?: any): Promise<UserDTO[]>;
4
+ findByIdSafe(id: string): Promise<UserDTO | null>;
5
+ findByEmail(email: string): Promise<UserDTO | null>;
6
+ updateLastLogin(id: string): Promise<void>;
7
+ findByIdWithRoles(id: string): Promise<UserDTO | null>;
8
+ findAllWithRoles(filter?: any, options?: any): Promise<UserDTO[]>;
9
+ countByRole(roleId: string): Promise<number>;
10
+ addRole(userId: string, roleId: string): Promise<UserDTO | null>;
11
+ removeRole(userId: string, roleId: string): Promise<UserDTO | null>;
12
+ create(data: any): Promise<UserDTO>;
13
+ update(id: string, data: any): Promise<UserDTO | null>;
14
+ delete(id: string): Promise<boolean>;
15
+ findById(id: string, options?: any): Promise<UserDTO | null>;
16
+ findOne(filter: any): Promise<UserDTO | null>;
17
+ findAll(filter?: any, options?: any): Promise<UserDTO[]>;
18
+ count(filter?: any): Promise<number>;
19
+ }
20
+ export interface IRoleRepository {
21
+ findAll(filter?: any, options?: any): Promise<RoleDTO[]>;
22
+ findByName(name: string): Promise<RoleDTO | null>;
23
+ findAllWithPermissions(): Promise<RoleDTO[]>;
24
+ findByIdWithPermissions(id: string): Promise<RoleDTO | null>;
25
+ addPermission(roleId: string, permId: string): Promise<RoleDTO | null>;
26
+ removePermission(roleId: string, permId: string): Promise<RoleDTO | null>;
27
+ removePermissionFromAll(permId: string): Promise<void | number>;
28
+ create(data: any): Promise<RoleDTO>;
29
+ update(id: string, data: any): Promise<RoleDTO | null>;
30
+ delete(id: string): Promise<boolean>;
31
+ findById(id: string, options?: any): Promise<RoleDTO | null>;
32
+ count(filter?: any): Promise<number>;
33
+ }
34
+ export interface IPermissionRepository {
35
+ findAllSorted(): Promise<PermissionDTO[]>;
36
+ findByName(name: string): Promise<PermissionDTO | null>;
37
+ countByCategory(categoryId: string): Promise<number>;
38
+ create(data: any): Promise<PermissionDTO>;
39
+ update(id: string, data: any): Promise<PermissionDTO | null>;
40
+ delete(id: string): Promise<boolean>;
41
+ findAll(filter?: any, options?: any): Promise<PermissionDTO[]>;
42
+ findById(id: string): Promise<PermissionDTO | null>;
43
+ count(filter?: any): Promise<number>;
44
+ }
45
+ export interface IPermissionCategoryRepository {
46
+ findAllOrdered(): Promise<PermissionCategoryDTO[]>;
47
+ findByName(name: string): Promise<PermissionCategoryDTO | null>;
48
+ create(data: any): Promise<PermissionCategoryDTO>;
49
+ update(id: string, data: any): Promise<PermissionCategoryDTO | null>;
50
+ delete(id: string): Promise<boolean>;
51
+ findAll(filter?: any, options?: any): Promise<PermissionCategoryDTO[]>;
52
+ findById(id: string): Promise<PermissionCategoryDTO | null>;
53
+ count(filter?: any): Promise<number>;
54
+ upsert(filter: any, data: any): Promise<PermissionCategoryDTO>;
55
+ }
56
+ export interface RbacRepos {
57
+ users: IUserRepository;
58
+ roles: IRoleRepository;
59
+ permissions: IPermissionRepository;
60
+ categories: IPermissionCategoryRepository;
61
+ }
62
+ /** Get RBAC repositories for the current data mode (ORM or NET) */
63
+ export declare function getRbacRepos(): Promise<RbacRepos>;
64
+ /** Reset cache (for tests) */
65
+ export declare function resetRbacRepos(): void;
66
+ //# sourceMappingURL=repos-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repos-factory.d.ts","sourceRoot":"","sources":["../../lib/repos-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ // repos-factory.ts — Centralized repository factory for dual ORM/NET mode
2
+ // In ORM mode: returns ORM repositories (BaseRepository + IDialect)
3
+ // In NET mode: returns NetClient-backed repositories with the same API
4
+ // Author: Dr Hamid MADANI drmdh@msn.com
5
+ import { isNetMode } from './data-mode.js';
6
+ let _cached = null;
7
+ /** Get RBAC repositories for the current data mode (ORM or NET) */
8
+ export async function getRbacRepos() {
9
+ if (_cached)
10
+ return _cached;
11
+ if (isNetMode()) {
12
+ _cached = await createNetRepos();
13
+ }
14
+ else {
15
+ _cached = await createOrmRepos();
16
+ }
17
+ return _cached;
18
+ }
19
+ /** Reset cache (for tests) */
20
+ export function resetRbacRepos() { _cached = null; }
21
+ // ============================================================
22
+ // ORM mode — original repositories
23
+ // ============================================================
24
+ async function createOrmRepos() {
25
+ const { getDialect, registerSchemas } = await import('@mostajs/orm');
26
+ const { UserSchema } = await import('../schemas/user.schema.js');
27
+ const { RoleSchema } = await import('../schemas/role.schema.js');
28
+ const { PermissionSchema } = await import('../schemas/permission.schema.js');
29
+ const { PermissionCategorySchema } = await import('../schemas/permission-category.schema.js');
30
+ const { UserRepository } = await import('../repositories/user.repository.js');
31
+ const { RoleRepository } = await import('../repositories/role.repository.js');
32
+ const { PermissionRepository } = await import('../repositories/permission.repository.js');
33
+ const { PermissionCategoryRepository } = await import('../repositories/permission-category.repository.js');
34
+ registerSchemas([UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema]);
35
+ const dialect = await getDialect();
36
+ return {
37
+ users: new UserRepository(dialect),
38
+ roles: new RoleRepository(dialect),
39
+ permissions: new PermissionRepository(dialect),
40
+ categories: new PermissionCategoryRepository(dialect),
41
+ };
42
+ }
43
+ // ============================================================
44
+ // NET mode — NetClient-backed repositories
45
+ // ============================================================
46
+ async function createNetRepos() {
47
+ const { NetClient } = await import('@mostajs/net/client');
48
+ const client = new NetClient({ url: process.env.MOSTA_NET_URL });
49
+ return {
50
+ users: createNetUserRepo(client),
51
+ roles: createNetRoleRepo(client),
52
+ permissions: createNetPermissionRepo(client),
53
+ categories: createNetCategoryRepo(client),
54
+ };
55
+ }
56
+ function createNetUserRepo(c) {
57
+ return {
58
+ findAllSafe: (filter = {}, options) => c.findAll('users', filter, Object.assign(Object.assign({}, options), { exclude: ['password'] })),
59
+ findByIdSafe: (id) => c.findById('users', id), // NET-side can add exclude later
60
+ findByEmail: (email) => c.findOne('users', { email: email.toLowerCase() }),
61
+ updateLastLogin: async (id) => { await c.update('users', id, { lastLoginAt: new Date().toISOString() }); },
62
+ findByIdWithRoles: (id) => c.findByIdWithRelations('users', id, ['roles']),
63
+ findAllWithRoles: (filter = {}, options) => c.findWithRelations('users', filter, ['roles'], options),
64
+ countByRole: (roleId) => c.count('users', { roles: roleId }),
65
+ addRole: (userId, roleId) => c.addToSet('users', userId, 'roles', roleId),
66
+ removeRole: (userId, roleId) => c.pull('users', userId, 'roles', roleId),
67
+ create: (data) => c.create('users', data),
68
+ update: (id, data) => c.update('users', id, data),
69
+ delete: (id) => c.delete('users', id),
70
+ findById: (id) => c.findById('users', id),
71
+ findOne: (filter) => c.findOne('users', filter),
72
+ findAll: (filter = {}, options) => c.findAll('users', filter, options),
73
+ count: (filter) => c.count('users', filter),
74
+ };
75
+ }
76
+ function createNetRoleRepo(c) {
77
+ return {
78
+ findAll: (filter = {}, options) => c.findAll('roles', filter, options),
79
+ findByName: (name) => c.findOne('roles', { name }),
80
+ findAllWithPermissions: () => c.findWithRelations('roles', {}, ['permissions']),
81
+ findByIdWithPermissions: (id) => c.findByIdWithRelations('roles', id, ['permissions']),
82
+ addPermission: (roleId, permId) => c.addToSet('roles', roleId, 'permissions', permId),
83
+ removePermission: (roleId, permId) => c.pull('roles', roleId, 'permissions', permId),
84
+ removePermissionFromAll: async (permId) => {
85
+ var _a;
86
+ const roles = await c.findAll('roles');
87
+ for (const role of roles) {
88
+ if ((_a = role.permissions) === null || _a === void 0 ? void 0 : _a.includes(permId)) {
89
+ await c.pull('roles', role.id, 'permissions', permId);
90
+ }
91
+ }
92
+ },
93
+ create: (data) => c.create('roles', data),
94
+ update: (id, data) => c.update('roles', id, data),
95
+ delete: (id) => c.delete('roles', id),
96
+ findById: (id) => c.findById('roles', id),
97
+ count: (filter) => c.count('roles', filter),
98
+ };
99
+ }
100
+ function createNetPermissionRepo(c) {
101
+ return {
102
+ findAllSorted: () => c.findAll('permissions', {}, { sort: { category: 1, name: 1 } }),
103
+ findByName: (name) => c.findOne('permissions', { name }),
104
+ countByCategory: (catId) => c.count('permissions', { category: catId }),
105
+ create: (data) => c.create('permissions', data),
106
+ update: (id, data) => c.update('permissions', id, data),
107
+ delete: (id) => c.delete('permissions', id),
108
+ findAll: (filter = {}, options) => c.findAll('permissions', filter, options),
109
+ findById: (id) => c.findById('permissions', id),
110
+ count: (filter) => c.count('permissions', filter),
111
+ };
112
+ }
113
+ function createNetCategoryRepo(c) {
114
+ return {
115
+ findAllOrdered: () => c.findAll('permission_categories', {}, { sort: { order: 1, name: 1 } }),
116
+ findByName: (name) => c.findOne('permission_categories', { name }),
117
+ create: (data) => c.create('permission_categories', data),
118
+ update: (id, data) => c.update('permission_categories', id, data),
119
+ delete: (id) => c.delete('permission_categories', id),
120
+ findAll: (filter = {}, options) => c.findAll('permission_categories', filter, options),
121
+ findById: (id) => c.findById('permission_categories', id),
122
+ count: (filter) => c.count('permission_categories', filter),
123
+ upsert: (filter, data) => c.upsert('permission_categories', filter, data),
124
+ };
125
+ }
126
+ //# sourceMappingURL=repos-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repos-factory.js","sourceRoot":"","sources":["../../lib/repos-factory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/rbac",
3
- "version": "1.0.10",
3
+ "version": "2.0.1",
4
4
  "description": "RBAC — User/Role/Permission schemas, repos, management UI, API handlers",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "MIT",
@@ -84,6 +84,16 @@
84
84
  "import": "./dist/lib/permissions-server.js",
85
85
  "default": "./dist/lib/permissions-server.js"
86
86
  },
87
+ "./lib/repos-factory": {
88
+ "types": "./dist/lib/repos-factory.d.ts",
89
+ "import": "./dist/lib/repos-factory.js",
90
+ "default": "./dist/lib/repos-factory.js"
91
+ },
92
+ "./lib/data-mode": {
93
+ "types": "./dist/lib/data-mode.d.ts",
94
+ "import": "./dist/lib/data-mode.js",
95
+ "default": "./dist/lib/data-mode.js"
96
+ },
87
97
  "./components/UsersManager": {
88
98
  "types": "./dist/components/UsersManager.d.ts",
89
99
  "import": "./dist/components/UsersManager.js",