47 lines
2.0 KiB
Markdown
47 lines
2.0 KiB
Markdown
# Permission Module
|
|
|
|
The Permission module provides frontend permission checks and gates. It also corresponds to the backend permission endpoint and permission discovery service used by AccessControl.
|
|
|
|
## Source Map
|
|
|
|
| Area | Path |
|
|
| -------------------------- | -------------------------------------------------------- |
|
|
| Frontend module | `apps/admin/src/core/Permission/` |
|
|
| Frontend gates | `apps/admin/src/core/Permission/view/gates/` |
|
|
| Frontend hook | `apps/admin/src/core/Permission/hooks/usePermissions.ts` |
|
|
| Frontend types | `apps/admin/src/core/Permission/entities/permission.ts` |
|
|
| Backend module | `backend/app/base_modules/Permission/` |
|
|
| Backend permission service | `backend/app/services/permission_service.ts` |
|
|
|
|
## Documentation
|
|
|
|
| Page | Purpose |
|
|
| ------------------------- | ------------------------------------------------------------------ |
|
|
| [Frontend](./frontend.md) | Permission types, hook, gates, and usage rules. |
|
|
| [Backend](./backend.md) | Permission endpoint, permission discovery, and permission configs. |
|
|
|
|
## Main Capabilities
|
|
|
|
- Check whether current user has required permission slugs.
|
|
- Support `all` and `any` matching modes.
|
|
- Render or hide UI actions through `PermissionGate`.
|
|
- Protect full pages through `PermissionPageGate`.
|
|
- Treat super admin as an all-permissions user.
|
|
|
|
## High-Level Flow
|
|
|
|
```txt
|
|
AuthProvider current user
|
|
-> AuthUser.permissions
|
|
-> usePermissions()
|
|
-> hasPermission()
|
|
-> PermissionGate or PermissionPageGate
|
|
```
|
|
|
|
## Ownership Rules
|
|
|
|
- Permission frontend owns permission checks and gate components.
|
|
- Auth owns loading current user permissions.
|
|
- AccessControl owns managing roles and assigning permissions.
|
|
- Backend modules own their own permission definitions in `config/permissions.ts`.
|