2.0 KiB
2.0 KiB
Permission Backend
The backend Permission module exposes available permission definitions. It is used by AccessControl when assigning permissions to roles.
Source root:
backend/app/base_modules/Permission/
Route
| Method | Route | Controller Method | Auth Required | Purpose |
|---|---|---|---|---|
GET |
/permission |
index |
Yes | Return all available permission definitions. |
Route file:
backend/app/base_modules/Permission/routes.ts
Request Flow
GET /permission
-> auth middleware
-> PermissionController.index
-> getAllPermissions()
-> scan backend module permission configs
-> return PermissionItem[]
Permission Discovery
Permission discovery lives in:
backend/app/services/permission_service.ts
getAllPermissions() scans:
backend/app/base_modules/*/config/permissions.ts
backend/app/modules/*/config/permissions.ts
Each config exports permission items:
type PermissionItem = {
slug: string;
name: string;
};
Current Permission Configs
Core permission definitions currently include:
backend/app/base_modules/Admin/config/permissions.ts
backend/app/base_modules/Role/config/permissions.ts
backend/app/base_modules/FileManager/config/permissions.ts
When adding a feature that needs access control, add permission definitions to the owning backend module's config/permissions.ts.
Admin Permission Slugs
getAdminPermissionSlugs(admin) loads an admin's roles and returns a set of permission slugs from role_permissions.
This function is used by backend policies to authorize operations.
Ownership Rules
- Backend modules own their own permission definitions.
- Permission service owns discovering all available permission definitions.
- AccessControl owns assigning permission slugs to roles.
- Auth owns returning the current user's permission slugs to the frontend.