@endora-commerce/mod-admin-roles 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/dist/admin/index.d.ts +47 -0
  4. package/dist/admin/index.d.ts.map +1 -0
  5. package/dist/admin/index.js +27 -0
  6. package/dist/admin/index.js.map +1 -0
  7. package/dist/backend/demo/reset.d.ts +20 -0
  8. package/dist/backend/demo/reset.d.ts.map +1 -0
  9. package/dist/backend/demo/reset.js +13 -0
  10. package/dist/backend/demo/reset.js.map +1 -0
  11. package/dist/backend/demo/rows.d.ts +64 -0
  12. package/dist/backend/demo/rows.d.ts.map +1 -0
  13. package/dist/backend/demo/rows.js +74 -0
  14. package/dist/backend/demo/rows.js.map +1 -0
  15. package/dist/backend/demo/seed.d.ts +20 -0
  16. package/dist/backend/demo/seed.d.ts.map +1 -0
  17. package/dist/backend/demo/seed.js +29 -0
  18. package/dist/backend/demo/seed.js.map +1 -0
  19. package/dist/backend/entities/admin-role.entity.d.ts +20 -0
  20. package/dist/backend/entities/admin-role.entity.d.ts.map +1 -0
  21. package/dist/backend/entities/admin-role.entity.js +65 -0
  22. package/dist/backend/entities/admin-role.entity.js.map +1 -0
  23. package/dist/backend/index.d.ts +96 -0
  24. package/dist/backend/index.d.ts.map +1 -0
  25. package/dist/backend/index.js +114 -0
  26. package/dist/backend/index.js.map +1 -0
  27. package/dist/backend/permission-inventory.d.ts +117 -0
  28. package/dist/backend/permission-inventory.d.ts.map +1 -0
  29. package/dist/backend/permission-inventory.js +585 -0
  30. package/dist/backend/permission-inventory.js.map +1 -0
  31. package/dist/backend/services/admin-role-ports.d.ts +39 -0
  32. package/dist/backend/services/admin-role-ports.d.ts.map +1 -0
  33. package/dist/backend/services/admin-role-ports.js +72 -0
  34. package/dist/backend/services/admin-role-ports.js.map +1 -0
  35. package/dist/backend/services/admin-role-service.d.ts +77 -0
  36. package/dist/backend/services/admin-role-service.d.ts.map +1 -0
  37. package/dist/backend/services/admin-role-service.js +219 -0
  38. package/dist/backend/services/admin-role-service.js.map +1 -0
  39. package/dist/backend/services/permission-catalogue.service.d.ts +130 -0
  40. package/dist/backend/services/permission-catalogue.service.d.ts.map +1 -0
  41. package/dist/backend/services/permission-catalogue.service.js +175 -0
  42. package/dist/backend/services/permission-catalogue.service.js.map +1 -0
  43. package/dist/backend/services/permission-service.d.ts +24 -0
  44. package/dist/backend/services/permission-service.d.ts.map +1 -0
  45. package/dist/backend/services/permission-service.js +40 -0
  46. package/dist/backend/services/permission-service.js.map +1 -0
  47. package/dist/manifest.d.ts +169 -0
  48. package/dist/manifest.d.ts.map +1 -0
  49. package/dist/manifest.js +192 -0
  50. package/dist/manifest.js.map +1 -0
  51. package/docs/admin_roles.md +38 -0
  52. package/i18n/en.json +10 -0
  53. package/i18n/pl.json +10 -0
  54. package/package.json +73 -0
  55. package/tailwind.css +14 -0
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: admin_roles
3
+ description: Admin role definitions + per-module Permissions
4
+ ---
5
+
6
+ # `admin_roles`
7
+
8
+ Admin role definitions and the per-module Permission matrix the role grants.
9
+
10
+ ## Public surface
11
+
12
+ | Verb + Path | Purpose |
13
+ | --- | --- |
14
+ | `GET /api/v1/admin/roles` | List Roles |
15
+ | `POST /api/v1/admin/roles` | Create Role with a Permission set |
16
+ | `PATCH /api/v1/admin/roles/:id` | Update Role |
17
+ | `DELETE /api/v1/admin/roles/:id` | Delete (rejected if assigned to active admin users) |
18
+
19
+ ## Permission model
20
+
21
+ Permissions are strings shaped `module:action` (e.g. `catalog:write`,
22
+ `integrations:manage`, `audit:read`). `permission-service.ts` exposes
23
+ `hasPermission(adminUser, 'module:action')`; the `requireAdmin(permission?)`
24
+ pre-handler in `auth/plugin.ts` consults it on every gated route. A Role
25
+ may also require 2FA — `requireAdmin` enforces the 2FA challenge before
26
+ invoking the route handler.
27
+
28
+ ## Entities
29
+
30
+ `AdminRole`, with `requires2fa: boolean` and a `permissions: string[]`
31
+ column.
32
+
33
+ ## Extension points
34
+
35
+ - **Custom permission strings** — define new ones at their first use; the
36
+ permission set is open and not enumerated server-side.
37
+ - **Hierarchical roles** — `permission-service.hasPermission` can resolve
38
+ inherited permissions; today every Role is flat.
package/i18n/en.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "nav.adminRoles.label": "Roles",
3
+ "actions.openAdminRoles.label": "Admin roles",
4
+ "actions.openAdminRoles.description": "Which permissions each admin role grants",
5
+ "errors.ADMIN_ROLE_CODE_TAKEN": "A role with that code already exists. Pick a different code, or edit the existing role.",
6
+ "errors.ADMIN_ROLE_IN_USE": "This role is still assigned, so it cannot be deleted. Reassign the accounts that hold it first.",
7
+ "errors.ADMIN_ROLE_IN_USE.assigned": "This role is still assigned to {assigned} admin account(s), so it cannot be deleted. Reassign them first.",
8
+ "errors.ADMIN_ROLE_IN_USE.assigned_to_deleted": "This role is still assigned to {deleted} deleted account(s). Restoring one of them restores the role with it, so the role cannot be deleted while they are in the bin.",
9
+ "errors.ADMIN_ROLE_PROTECTED": "The \"{role}\" role is seeded by a module and cannot be deleted. Remove the module to remove its role."
10
+ }
package/i18n/pl.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "nav.adminRoles.label": "Role",
3
+ "actions.openAdminRoles.label": "Role panelu",
4
+ "actions.openAdminRoles.description": "Uprawnienia przypisane do każdej roli",
5
+ "errors.ADMIN_ROLE_CODE_TAKEN": "Rola o tym kodzie już istnieje. Wybierz inny kod albo edytuj istniejącą rolę.",
6
+ "errors.ADMIN_ROLE_IN_USE": "Ta rola jest nadal przypisana, więc nie można jej usunąć. Najpierw zmień przypisanie kont, które ją mają.",
7
+ "errors.ADMIN_ROLE_IN_USE.assigned": "Ta rola jest nadal przypisana do {assigned} kont administratorów, więc nie można jej usunąć. Najpierw zmień im przypisanie.",
8
+ "errors.ADMIN_ROLE_IN_USE.assigned_to_deleted": "Ta rola jest nadal przypisana do {deleted} usuniętych kont. Przywrócenie takiego konta przywraca też jego rolę, więc roli nie można usunąć, dopóki konta są w koszu.",
9
+ "errors.ADMIN_ROLE_PROTECTED": "Rola „{role}” pochodzi z modułu i nie można jej usunąć. Aby usunąć rolę, usuń moduł."
10
+ }
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@endora-commerce/mod-admin-roles",
3
+ "version": "0.100.0",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "description": "Admin RBAC — roles, permissions, and policy enforcement for admin sessions.",
7
+ "license": "MIT",
8
+ "endora": {
9
+ "type": "module",
10
+ "id": "admin_roles"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/endora-commerce/endora-commerce.git",
15
+ "directory": "packages/modules/admin_roles"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/manifest.d.ts",
23
+ "default": "./dist/manifest.js"
24
+ },
25
+ "./backend": {
26
+ "types": "./dist/backend/index.d.ts",
27
+ "default": "./dist/backend/index.js"
28
+ },
29
+ "./admin": {
30
+ "types": "./dist/admin/index.d.ts",
31
+ "default": "./dist/admin/index.js"
32
+ },
33
+ "./tailwind.css": "./tailwind.css",
34
+ "./package.json": "./package.json"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "i18n",
39
+ "docs",
40
+ "tailwind.css"
41
+ ],
42
+ "engines": {
43
+ "node": ">=22.18.0"
44
+ },
45
+ "peerDependencies": {
46
+ "@mikro-orm/core": "^6",
47
+ "@mikro-orm/postgresql": "^6",
48
+ "@endora-commerce/admin-kit": "0.100.0",
49
+ "@endora-commerce/contracts": "0.100.0",
50
+ "@endora-commerce/platform": "0.100.0"
51
+ },
52
+ "peerDependenciesMeta": {
53
+ "@endora-commerce/admin-kit": {
54
+ "optional": true
55
+ }
56
+ },
57
+ "devDependencies": {
58
+ "@mikro-orm/core": "^6.6.13",
59
+ "@mikro-orm/postgresql": "^6.6.13",
60
+ "@types/node": "^22.9.0",
61
+ "typescript": "^5.9.3",
62
+ "vitest": "^4.1.11",
63
+ "@endora-commerce/admin-kit": "0.100.0",
64
+ "@endora-commerce/contracts": "0.100.0",
65
+ "@endora-commerce/platform": "0.100.0"
66
+ },
67
+ "scripts": {
68
+ "build": "tsc -p tsconfig.build.json && tsc -p tsconfig.ui.json",
69
+ "typecheck": "tsc -p tsconfig.json && tsc -p tsconfig.ui.json --noEmit",
70
+ "lint": "eslint src",
71
+ "test": "vitest run"
72
+ }
73
+ }
package/tailwind.css ADDED
@@ -0,0 +1,14 @@
1
+ /* @endora-commerce/mod-admin-roles — AUTO-GENERATED by `pnpm --filter backend run manifests:generate`.
2
+ *
3
+ * The `@source` directives this package asks its host to scan
4
+ * (`specs/110-instance-repository/contracts/admin-stylesheet-composition.md` R1).
5
+ * They resolve relative to **this file**, so they hold wherever the package is
6
+ * installed — a workspace link here, `node_modules` in a client's instance.
7
+ *
8
+ * The `dist` line is what a published tarball ships and is what an instance
9
+ * scans; the `src` line is inert there and is what keeps `pnpm --filter admin
10
+ * run dev` reading source in this repository. Do not edit: run
11
+ * `pnpm --filter backend run manifests:generate`.
12
+ */
13
+ @source "./dist/admin";
14
+ @source "./src/admin";