Skip to content

Gestión de empleados

La entidad Employee (src/Entity/Organization/Employee) es el modelo de usuario del sistema Doggy y también el sujeto de autenticación de Symfony Security. La entrada de gestión se basa en EmployeeController y EmployeeApiController.

Descripción general

El módulo de gestión de empleados cubre todo el ciclo de vida:

  • Perspectiva de RR. HH.: gestión de la plantilla, incorporación, análisis estadístico
  • Perspectiva de TI: alta de cuentas, asignación de permisos, configuración de Passkey
  • Perspectiva de gestores: gestión de equipos, relaciones jerárquicas, asignación de personal

Estructura de la entidad

Employee es la entidad App\Entity\Organization\Employee y también el proveedor de usuarios de Security:

yaml
# config/packages/security.yaml
providers:
  app_user_provider:
    entity:
      class: App\Entity\Organization\Employee

Campos clave:

  • isPasswordModifiedByUser: indica si la contraseña inicial ya se ha modificado
  • Relación uno a muchos con WebauthnCredential (passkeys)
  • El avatar se gestiona a través de AvatarController

Funcionalidades principales

Plantilla de empleados

  • Interfaz de administración: templates/employee/list.html.twig
  • Página de detalle: templates/employee/show.html.twig
  • Página de edición: templates/employee/edit.html.twig
  • Panel de edición: templates/employee/edit_drawer.html.twig
  • Gestión de avatar: templates/employee/_avatar_modal.html.twig

Interfaz API

La gestión de empleados ofrece una API RESTful a través de EmployeeApiController:

http
GET    /api/admin/employees         # Lista de empleados
POST   /api/admin/employees         # Crear empleado
GET    /api/admin/employees/{id}    # Detalle del empleado
PUT    /api/admin/employees/{id}    # Actualizar empleado
DELETE /api/admin/employees/{id}    # Eliminar empleado

Proceso de incorporación

En el primer inicio de sesión, el sistema detecta automáticamente el estado del usuario mediante UserSetupListener:

  1. Comprueba si la contraseña se ha modificado (isPasswordModifiedByUser)
  2. Comprueba si se ha registrado un Passkey
  3. Si falta algún paso, redirige a la página de configuración

Configuración de usuario

php
// src/EventListener/UserSetupListener.php
// Lista blanca de rutas de permisos: app_user_setup, app_logout
// Las rutas de WebAuthn y de inicio de sesión siempre son accesibles

// Redirige a la página de configuración cuando la contraseña no se ha modificado o no hay Passkey

Puntos de entrada de administración

  • Lista de empleados: App\Controller\EmployeeController
  • API: App\Controller\Api\EmployeeApiController
  • Avatar: App\Controller\Api\AvatarController

Código abierto bajo MIT | Copyright © 2026 Doggy