@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.
- package/LICENSE +21 -0
- package/README.md +52 -0
- package/dist/admin/index.d.ts +47 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +27 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/backend/demo/reset.d.ts +20 -0
- package/dist/backend/demo/reset.d.ts.map +1 -0
- package/dist/backend/demo/reset.js +13 -0
- package/dist/backend/demo/reset.js.map +1 -0
- package/dist/backend/demo/rows.d.ts +64 -0
- package/dist/backend/demo/rows.d.ts.map +1 -0
- package/dist/backend/demo/rows.js +74 -0
- package/dist/backend/demo/rows.js.map +1 -0
- package/dist/backend/demo/seed.d.ts +20 -0
- package/dist/backend/demo/seed.d.ts.map +1 -0
- package/dist/backend/demo/seed.js +29 -0
- package/dist/backend/demo/seed.js.map +1 -0
- package/dist/backend/entities/admin-role.entity.d.ts +20 -0
- package/dist/backend/entities/admin-role.entity.d.ts.map +1 -0
- package/dist/backend/entities/admin-role.entity.js +65 -0
- package/dist/backend/entities/admin-role.entity.js.map +1 -0
- package/dist/backend/index.d.ts +96 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +114 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/permission-inventory.d.ts +117 -0
- package/dist/backend/permission-inventory.d.ts.map +1 -0
- package/dist/backend/permission-inventory.js +585 -0
- package/dist/backend/permission-inventory.js.map +1 -0
- package/dist/backend/services/admin-role-ports.d.ts +39 -0
- package/dist/backend/services/admin-role-ports.d.ts.map +1 -0
- package/dist/backend/services/admin-role-ports.js +72 -0
- package/dist/backend/services/admin-role-ports.js.map +1 -0
- package/dist/backend/services/admin-role-service.d.ts +77 -0
- package/dist/backend/services/admin-role-service.d.ts.map +1 -0
- package/dist/backend/services/admin-role-service.js +219 -0
- package/dist/backend/services/admin-role-service.js.map +1 -0
- package/dist/backend/services/permission-catalogue.service.d.ts +130 -0
- package/dist/backend/services/permission-catalogue.service.d.ts.map +1 -0
- package/dist/backend/services/permission-catalogue.service.js +175 -0
- package/dist/backend/services/permission-catalogue.service.js.map +1 -0
- package/dist/backend/services/permission-service.d.ts +24 -0
- package/dist/backend/services/permission-service.d.ts.map +1 -0
- package/dist/backend/services/permission-service.js +40 -0
- package/dist/backend/services/permission-service.js.map +1 -0
- package/dist/manifest.d.ts +169 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +192 -0
- package/dist/manifest.js.map +1 -0
- package/docs/admin_roles.md +38 -0
- package/i18n/en.json +10 -0
- package/i18n/pl.json +10 -0
- package/package.json +73 -0
- 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";
|