El módulo de Roles y Permisos de Pensión a la Medida implementa control de acceso basado en roles (RBAC) a través de la librería Spatie Laravel Permission. Cada usuario del sistema tiene asignado uno o más roles, y cada rol acumula un conjunto de permisos que determinan a qué módulos puede acceder. La gestión completa de roles y la asignación o revocación de permisos se realiza desde la interfaz web, sin necesidad de tocar el código fuente ni la base de datos directamente.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/amarcano568/pensionalamedida/llms.txt
Use this file to discover all available pages before exploring further.
Acceso al módulo
El acceso a la vista de gestión de roles está protegido por el permisogestion_roles. Cualquier usuario que no cuente con dicho permiso asignado a su rol recibirá una respuesta de acceso denegado al intentar navegar a esta ruta.
| Método | Ruta | Controlador | Permiso requerido |
|---|---|---|---|
GET | /gestion-roles | MantenimientoRolesController@gestionRoles | gestion_roles |
auth y un subgrupo permission:gestion_roles en routes/web.php:
roles.gestion y recibe la colección completa de roles existentes en la tabla roles.
Permisos del sistema
Los siguientes permisos están definidos y activos en el sistema. Cada uno protege el acceso a la vista principal de su módulo respectivo mediante el middlewarepermission de Spatie.
| Permiso | Módulo protegido | Ruta de acceso principal |
|---|---|---|
gestion_alumnos | Gestión de estudiantes — altas, bajas, consultas, hospedaje y trabajos imputados | GET /gestionar-estudiantes |
gestion_grupos_familiares | Gestión de grupos familiares — creación, edición y eliminación de grupos e hijos | GET /gestionar-grupos-familiares |
gestion_residencia | Gestión de residencia — habitaciones, huéspedes y mobiliarios | GET /gestion-residencia |
gestion_roles | Gestión de roles y asignación de permisos | GET /gestion-roles |
Los permisos de soporte (listado, edición, eliminación) dentro de cada módulo no están cubiertos individualmente por el middleware de permiso; solo la ruta de acceso principal (vista de gestión) requiere el permiso correspondiente. El control sobre las acciones secundarias recae en la lógica de negocio del controlador.
Ver y cambiar permisos de un rol
Para inspeccionar o modificar los permisos de un rol específico, el frontend realiza una petición GET pasando el identificador numérico del rol. El servidor devuelve los datos del rol junto con dos listas HTML de elementos<li> listas para ser renderizadas en la UI de arrastrar y soltar.
| Método | Ruta |
|---|---|
GET | /change-role |
Identificador numérico del rol a consultar. Corresponde al campo
id de la tabla roles.asignados contiene el HTML de los permisos ya asignados al rol y disponibles contiene los permisos aún no asignados. La lógica del controlador es:
La UI de arrastrar y soltar renderiza los permisos disponibles y asignados como elementos
<li> con las clases CSS permisoDisponible y permisoAsignado respectivamente, ambas con la clase adicional ui-state-default draggable-item. Esta estructura habilita las interacciones de jQuery UI Sortable — al mover un elemento entre las dos listas, el frontend llama automáticamente a los endpoints de asignar o revocar permiso.Asignar un permiso
Otorga un permiso a un rol. Internamente el controlador llama al métodogivePermissionTo de Spatie sobre el modelo Role.
| Método | Ruta |
|---|---|
GET | /dar-permiso-a |
Identificador numérico del rol al que se desea asignar el permiso.
Nombre del permiso a asignar (ej.
gestion_alumnos). Debe existir previamente en la tabla permissions.Revocar un permiso
Elimina un permiso previamente asignado a un rol. El controlador verifica primero que el rol posea el permiso (hasPermissionTo) antes de proceder con la revocación (revokePermissionTo).
| Método | Ruta |
|---|---|
GET | /revocar-permiso |
Identificador numérico del rol al que se desea revocar el permiso.
Nombre del permiso a revocar (ej.
gestion_residencia). Debe estar asignado al rol o la operación retornará success: false.Crear un nuevo rol
Crea un nuevo rol vacío (sin permisos) en la base de datos. Una vez creado, aparece en el listado de roles y se le pueden asignar permisos mediante los endpoints descritos arriba.| Método | Ruta |
|---|---|
POST | /nuevo-role |
Nombre del nuevo rol a crear (ej.
"Recepcionista"). Se almacena en la columna name de la tabla roles con guard_name igual a web.data contiene la lista actualizada de todos los roles, lista para refrescar la tabla en el frontend.
El fragmento relevante del controlador:
DB::beginTransaction / DB::rollback) para garantizar la integridad en caso de error.