ControladorPermisos
in package
ControladorPermisos — Lógica de aplicación sobre el modelo (usuario × página × conexión).
Esta clase NO ejecuta SQL directamente, todo va a PermisosDao / ConexionConfigDao. Aquí solo viven:
- Aplicación de las reglas de rol.
- Agrupación/forma de los datos para el frontend.
- Envoltura de errores con códigos de estado.
Funciones por bloque:
Sidebar / navegación: getMisPaginasParaSidebar() agrupado por categoría getMisConexionesParaPagina() conexiones para el checkbox
Validación de acceso a recursos: validarAcceso() usada por requireAuth() de api.php
Panel administrativo: getUsuariosEnAmbito() getDatosModalUsuario() guardarPermisosUsuario() puedeEliminarUsuario() getCentrosEditablesDelAdmin()
SUPER_USER (rol 2) hace bypass donde corresponda.
Table of Contents
Methods
- getCentrosEditablesDelAdmin() : array<string|int, mixed>
- Conexiones del ámbito del admin con datos públicos.
- getDatosModalUsuario() : array<string|int, mixed>
- Datos para abrir el modal de un usuario:
- getMisPaginasParaSidebar() : array<string|int, mixed>
- Devuelve las páginas visibles para el usuario, agrupadas por categoría.
- getPaginaPrincipal() : array<string|int, mixed>
- Obtiene la pagina principal del usuario ( idealmente dashboard )
- getUsuariosEnAmbito() : array<string|int, mixed>
- Listado de usuarios visibles para el admin.
- guardarPermisosUsuario() : array<string|int, mixed>
- Guarda los cambios de permisos enviados desde el modal.
- puedeEliminarUsuario() : bool
- Reglas para eliminar/desactivar un usuario: - SUPER siempre puede.
- validarAcceso() : bool
- Comprueba que el usuario tiene permiso a la página sobre TODAS las conexiones indicadas. Usado por requireAuth() en api.php antes de ejecutar cualquier endpoint que opere sobre tracking_*.
Methods
getCentrosEditablesDelAdmin()
Conexiones del ámbito del admin con datos públicos.
public
static getCentrosEditablesDelAdmin(int $callerId, int $rol) : array<string|int, mixed>
Usada en "Crear usuario" para acotar dónde puede asignar permisos.
Parameters
- $callerId : int
-
: id del caller
- $rol : int
-
: rol del caller
Return values
array<string|int, mixed> —resultado de la operacion
getDatosModalUsuario()
Datos para abrir el modal de un usuario:
public
static getDatosModalUsuario(int $callerId, int $rol, int $targetUserId) : array<string|int, mixed>
paginas: catálogo completo de páginas (encabezados del árbol). centros: conexiones a mostrar: · editables = ámbito del admin · bloqueadas = conexiones donde el usuario tiene permisos pero fuera del ámbito (visibles con candado, sin contenido). permisos: matriz { cid: { pid: true } } actual del usuario.
Parameters
- $callerId : int
- $rol : int
- $targetUserId : int
Return values
array<string|int, mixed>getMisPaginasParaSidebar()
Devuelve las páginas visibles para el usuario, agrupadas por categoría.
public
static getMisPaginasParaSidebar(int $userId, int $rol) : array<string|int, mixed>
Las categorías sin páginas no aparecen.
Parameters
- $userId : int
-
: id del usuario
- $rol : int
-
: rol del usuario para control
Return values
array<string|int, mixed> —resultado de la operacion
getPaginaPrincipal()
Obtiene la pagina principal del usuario ( idealmente dashboard )
public
static getPaginaPrincipal(int $user_id) : array<string|int, mixed>
Parameters
- $user_id : int
-
: id del usuario
Return values
array<string|int, mixed> —resultado de la operacion
getUsuariosEnAmbito()
Listado de usuarios visibles para el admin.
public
static getUsuariosEnAmbito(int $callerId, int $rol) : array<string|int, mixed>
Parameters
- $callerId : int
-
: id del caller
- $rol : int
-
: rol del caller
Return values
array<string|int, mixed> —resultado de la operacion
guardarPermisosUsuario()
Guarda los cambios de permisos enviados desde el modal.
public
static guardarPermisosUsuario(int $callerId, int $rol, int $targetUserId, array<string|int, mixed> $nuevos) : array<string|int, mixed>
Parameters
- $callerId : int
-
: id del caller
- $rol : int
-
: rol del caller
- $targetUserId : int
-
: id del usuario a cambiar
- $nuevos : array<string|int, mixed>
-
: nuevos permisos del usuario
Return values
array<string|int, mixed> —resultado de la operacion
puedeEliminarUsuario()
Reglas para eliminar/desactivar un usuario: - SUPER siempre puede.
public
static puedeEliminarUsuario(int $callerId, int $rol, int $targetUserId) : bool
- Admin: solo si TODOS los permisos del destino están dentro de su scope.
- Nadie puede operar sobre sí mismo.
Parameters
- $callerId : int
-
: id del caller
- $rol : int
-
: rol del caller
- $targetUserId : int
-
: id del usuario objetivo
Return values
bool —resultado de la operacion
validarAcceso()
Comprueba que el usuario tiene permiso a la página sobre TODAS las conexiones indicadas. Usado por requireAuth() en api.php antes de ejecutar cualquier endpoint que opere sobre tracking_*.
public
static validarAcceso(int $userId, int $rol, int $paginaId, array<string|int, mixed> $conexionIds) : bool
Parameters
- $userId : int
-
: id del usuario
- $rol : int
-
: rol del usuario
- $paginaId : int
-
: id de la pagina
- $conexionIds : array<string|int, mixed>
-
: id de la conexion
Return values
bool —resultado de la operacion