SEAM uses a two-layer access control model. Roles are named profiles (e.g.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/TheSerchCp/SEAM/llms.txt
Use this file to discover all available pages before exploring further.
admin, profesor, alumno) that are assigned to users and used to populate dropdown selectors throughout the application. Permissions are fine-grained URI-shaped strings (e.g. ver_reportes) that can be created, deleted, and freely assigned to or removed from any role. The Permissions page presents both dimensions side-by-side and reacts in real time when any connected client changes the configuration.
Roles
Roles are read-only from the UI perspective — they are fetched on demand and used to populate<select> fields in the user and permissions forms. There is no create/edit/delete UI for roles in the current release; management is expected to happen directly in the database or via a future admin panel.
RolesPage falls back to session.roles seed data if the API call fails, ensuring the page renders even in offline or dev environments.
Permissions repository
Every permission operation is handled bypermissions.repository.js, which maps directly onto the REST API:
Permissions service
API endpoints
| Method | Path | Description |
|---|---|---|
GET | /roles | List all roles |
GET | /permission | List all permissions |
GET | /permission/getByRoleId?roleId=X | List permissions assigned to role X |
POST | /permission/register | Create a new permission { nameUri, description } |
DELETE | /permission/:id | Delete a permission by ID |
POST | /permission/assign | Assign a permission to a role { roleId, permissionId } |
DELETE | /permission/unassign | Remove a permission from a role { roleId, permissionId } |
Create permission payload
A URI-style identifier for the permission, e.g.
ver_reportes.A human-readable description shown in the permissions table.
Permissions page UI
The page renders two panels side-by-side:- Permisos disponibles — all permissions not yet assigned to the selected role. Each row has an Assign button and a Delete button.
- Permisos del rol — permissions currently assigned to the selected role. Each row has a Remove and a Delete button.
Real-time updates
The permissions page listens fordata:changed events from the WebSocket and calls reloadPanels() when any of the following operations are broadcast by the server:
Role changes (
roles:create, roles:update, roles:delete) are included in the permissions listener because the role selector dropdown must stay in sync when another admin modifies the roles list.