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?