Files
admin/docs/core-modules/permission/backend.md
T

2.1 KiB

Permission Backend

The backend Permission module exposes available permission definitions. It is used by AccessControl when assigning permissions to roles.

Source root:

apps/backend/app/base_modules/Permission/

Route

Method Route Controller Method Auth Required Purpose
GET /permission index Yes Return all available permission definitions.

Route file:

apps/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:

apps/backend/app/services/permission_service.ts

getAllPermissions() scans:

apps/backend/app/base_modules/*/config/permissions.ts
apps/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:

apps/backend/app/base_modules/Admin/config/permissions.ts
apps/backend/app/base_modules/Role/config/permissions.ts
apps/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.