Permission modules
Access prerequisites
- Permission (module):
manageRoles(same as the Users group; the/users/modulesroute has no dedicated menu item) - Licence/Feature: None
- Menu container: GENERAL → Users group (internal route, no dedicated menu item — accessed via internal link)
What it is / when to use
Catalogue of the permission modules of the dynamic permission system — the "DB" half of the dual-permission model. Each row is a module (e.g. viewUsers, manageToken, sendBalance) with a readable description. This catalogue feeds the "Available/Assigned" boxes on the Roles screen and the *appHasPermission gating in the UI. Use it mainly to review existing modules and adjust their descriptions.
The route is /users/modules (ModulesListComponent); it does not appear as an item in the side menu — it is an internal configuration of the permissions system.
Pre-conditions
- Permission:
manageRoles(same as the Users group). Dual permission: CPM enum + dynamic module. - Licence/Feature: none.
- Dependencies: the modules here must have a counterpart in the static enum
E_PERMISSION_MODULES(backend + frontend copy) for the@AuthenticationRequired(...)decorator to validate the route. A module only in the catalogue (without an enum entry) enables the*ngIf/button in the UI, but the route is denied on the backend; a module only in the enum (without a catalogue entry) never appears in the UI.
Step by step
- Access the internal route
/users/modules(from internal links in the Users group). - Use the search to locate a module by name.
- Click the icon to view or edit a module.
- Adjust the description and save.
Fields (module dialog)
| Field | What it is | Required? | Effect on system/backend |
|---|---|---|---|
Module name (module) | The technical key of the module (e.g. manageToken) | Yes | Read-only in the dialog. It is the key matched with the CPM enum and used by the UI gating. Not editable here to avoid breaking the link with the enum. |
| Description | Readable text explaining the module | Yes | Saved via updateUsers (CPM). Cannot be left empty (Save button disabled). It is the label displayed in the Roles lists. |
Actions and modals
- View: opens the module in read mode, with a button to switch to edit.
- Edit: allows changing only the description and saving.
Business rules / cautions
Attention
- Permission is dual and this catalogue is only half of it. Creating/seeding a new production module is normally done via Liquibase in DataInitializerService (seed in the CPM) together with adding the key to the
E_PERMISSION_MODULESenum (backend + frontend copy). Editing the description here does not create a permission effect on its own. - The name (key) is not editable via the dialog by design: renaming it would break the match with the enum and the UI gating. To introduce a new admin action, add the key to the enum, seed the module in the DB and associate it with a Role.
- Without the module registered here, the corresponding button/menu never appears even if the enum is correct — because the UI uses the dynamic flag.