🛡️ Roles y permisos en CORDIA
CORDIA utiliza un sistema de control de acceso basado en roles de usuario y políticas de permisos, implementado a través del sistema de autorización de Laravel.
Este sistema permite limitar o permitir acciones específicas según el perfil del usuario, garantizando seguridad y control sobre los datos lingüísticos.
👤 Roles disponibles
Los roles se definen en la base de datos y pueden ampliarse según necesidades del proyecto. Algunos ejemplos:
| Rol | Descripción |
|---|---|
admin |
Acceso total a todos los módulos, gestión técnica y validación |
tecnico |
Permisos ampliados, acceso al panel Filament, configuración interna |
validador |
Puede revisar, aprobar o rechazar contenidos |
revisor |
Puede consultar y proponer cambios, pero no validar |
invitado |
Acceso limitado a recursos públicos o en solo lectura |
🔐 ¿Cómo se aplican los permisos?
Se utilizan las Policies de Laravel para definir qué usuario puede hacer qué acción sobre cada modelo.
Ejemplo:
public function update(User $user, Entry $entry) {
return $user->hasRole('validador') || $user->id === $entry->created_by;
}
También pueden definirse gates globales:
Gate::define('ver-zonas', fn ($user) => $user->hasRole('admin'));
📁 Ubicación del código
app/api-laravel/
├── app/Policies/ # Policies por modelo
├── app/Providers/AuthServiceProvider.php
🔄 Relación con JWT
Una vez autenticado mediante JWT (/login), el sistema identifica al usuario y carga sus roles y permisos para cada petición.
Esto permite que la API devuelva solo lo que el usuario tiene permitido ver o modificar.
⚠️ Importante
- Las políticas deben mantenerse actualizadas cuando cambian los modelos o roles
- No se deben asumir permisos desde el frontend: siempre deben validarse en backend
Consulta también
jwt.mdybackend-interno.mdpara ver cómo se integran estos roles en la interfaz y API.