Skip to main content

Check Permissions

Este archivo proporciona un sistema básico de control de acceso basado en roles, útil para validar si un usuario tiene permiso para realizar una acción específica en la aplicación.


🗂️ Objeto: permisos

const permisos = {
ver: ["ADMIN", "DESARROLLADOR", "USUARIO", "LECTOR", "COMENTARISTA", "EDITOR"],
crear: ["ADMIN", "DESARROLLADOR", "USUARIO", "EDITOR"],
editar: ["ADMIN", "DESARROLLADOR", "USUARIO", "EDITOR"],
eliminar: ["ADMIN", "DESARROLLADOR", "USUARIO", "EDITOR"],
comentar: ["ADMIN", "DESARROLLADOR", "USUARIO", "COMENTARISTA", "EDITOR"],
};

🎯 Descripción:

Define qué roles tienen permitido realizar cada acción clave del sistema. Está diseñado para ser reutilizable y fácilmente extensible.


🔧 Función: puede

export function puede(accion: keyof typeof permisos, rol: string): boolean

✅ Propósito:

Determina si un rol específico (rol) tiene permiso para realizar una determinada acción (accion).


📥 Parámetros:

NombreTipoDescripción
accionkeyof typeof permisosAcción a validar (ver, crear, etc.).
rolstringRol del usuario a verificar.

📤 Retorno:

TipoDescripción
booleantrue si el rol tiene permiso para la acción, false si no.

⚠️ Nota: Si la acción proporcionada no existe en el objeto permisos, la función retornará false automáticamente, ya que permisos[accion] será undefined y no contendrá el rol buscado.


🔍 Ejemplo de uso:

if (!puede("eliminar", usuario.rol)) {
return res.status(403).json({ message: "No tienes permiso para eliminar." });
}

🧠 Ventajas:

  • Centraliza la lógica de permisos.
  • Facilita el mantenimiento y escalabilidad del control de acceso.
  • Se puede usar tanto en middleware como directamente en controladores o servicios.