Saltar al contenido principal

Login público y control de acceso

A veces quieres que algunas páginas de tu sitio solo las vean personas autorizadas. Ejemplos:

  • Portal de empleados: solicitudes de vacaciones, ver liquidaciones.
  • Portal de clientes: ver el estado de sus pedidos.
  • Área de socios: contenido exclusivo.
  • Panel de proveedores: descargar catálogos o subir facturas.

El framework tiene un sistema de login integrado que reusa los usuarios del CMS. No hay que crear otro sistema de autenticación.

Cómo funciona​

Cada página que creas tiene un selector de acceso:

  • Pública — abierta, sin login (por defecto).
  • Privada (con login) — pide iniciar sesión antes de mostrar el contenido.

Al marcar Privada aparecen opciones para restringir aún más:

  • Grupos / roles: uno o varios roles pueden entrar (ej. "empleado", "cliente").
  • Usuarios específicos: solo emails puntuales.
  • Todos los usuarios logueados (si no marcas nada).

Los "usuarios" son los admins del CMS​

Un punto crítico: los visitantes que se logueen en tu sitio público son usuarios del CMS. No hay un sistema separado de "clientes registrados" — se reusa la tabla admins.

Esto significa:

  • Un empleado que va a entrar al portal, tiene que estar dado de alta como usuario del CMS.
  • El framework filtra qué puede ver según su rol (o email específico).
  • No entra al panel del CMS — solo a las páginas públicas que están abiertas para su rol.

¿Y si no quiero que vean el CMS?​

Si un empleado tiene rol empleado (o el que definas), y ese rol no tiene acceso a ninguna página del CMS, al intentar entrar al /cms/ verá "no autorizado". Solo podrá acceder a las páginas públicas privadas donde su rol esté marcado.

Paso a paso: portal de empleados​

Vamos a crear un portal donde empleados vean sus solicitudes.

1. Crear el rol "empleado"​

Desde Configuración → Roles (o al crear usuarios), asegúrate de que exista un rol empleado.

2. Dar de alta a los empleados como usuarios​

Ve a Usuarios → Nuevo usuario:

  • Nombre: Juan Pérez
  • Email: juan@empresa.com
  • Contraseña temporal: (una que después el usuario podrá cambiar)
  • Rol: empleado

3. Crear la tabla "Solicitudes"​

Con columnas: empleado (relación a usuarios), tipo (vacaciones, permisos…), motivo, fechas, estado.

4. Crear la página privada​

En el generador:

  • Título: Portal del empleado
  • URL: portal
  • Tabla: solicitudes
  • Acceso: Privada
  • Grupos: empleado

Escribe el HTML con un formulario para crear solicitudes y un listado con las solicitudes propias.

5. Compartir el enlace​

Los empleados entran a https://tu-sitio.com/portal. La primera vez el framework les pide login. Con su usuario del CMS entran y ven la página.

Filtrar por usuario​

En un portal, cada empleado suele ver solo sus solicitudes, no las de todos. Para eso, en el {{#cada}} puedes filtrar por el usuario actual. Consulta el panel de ayuda del generador — normalmente hay un parámetro como empleado={{usuario_actual_id}} o filtro_usuario=true.

Restringir por email específico​

En vez de restringir por rol, puedes autorizar emails puntuales:

  • Acceso: Privada
  • Usuarios específicos: juan@empresa.com, maria@empresa.com

Útil para paneles muy exclusivos, pero no escala bien con muchos usuarios — mejor un rol.

Cerrar sesión​

Las páginas privadas incluyen automáticamente un enlace "Cerrar sesión" que redirige al login.

Si el visitante entra a otra página privada después, el login se pide de nuevo.

Combinar con RBAC Manager​

Si necesitas permisos aún más granulares (rol X puede ver la página pero solo puede crear registros, no editarlos), activa el plugin RBAC Manager y define permisos por rol × página × acción.

Errores comunes​

  • "Este usuario no tiene permiso": el usuario existe pero su rol no está autorizado para la página. Revisa el selector de roles de la página.
  • Redirección infinita al login: verifica que el usuario tenga contraseña definida y no esté bloqueado.
  • El usuario ve el CMS y no queremos: el rol "empleado" tal vez tiene permisos residuales. Revisa desde Usuarios → editar → qué páginas del CMS puede ver.

Seguridad​

  • Contraseñas: se guardan con BCRYPT, no en texto plano.
  • Sesiones: se almacenan en el servidor con cookies HTTPOnly.
  • HTTPS: si tu sitio está en producción, asegúrate de tener certificado SSL — sin HTTPS las contraseñas viajan en claro.
  • 2FA: los usuarios pueden activar autenticación en dos pasos desde su perfil.

¿Qué sigue?​