Saltar a contenido

🛡️ 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.md y backend-interno.md para ver cómo se integran estos roles en la interfaz y API.