Class AutenticacionService

java.lang.Object
com.gestorrh.api.service.AutenticacionService

@Service public class AutenticacionService extends Object
Servicio encargado de orquestar los procesos de autenticación y seguridad de acceso.

Proporciona métodos específicos para el inicio de sesión de empresas y empleados, validando credenciales cifradas y estados de cuenta (actividad y vigencia de contratos).

Tras una autenticación exitosa, genera tokens de acceso seguros (JWT) enriquecidos con los Claims necesarios para la autorización basada en roles dentro de la API.

See Also:
  • Field Details

    • empresaRepository

      private final EmpresaRepository empresaRepository
    • empleadoRepository

      private final EmpleadoRepository empleadoRepository
    • codificadorPassword

      private final org.springframework.security.crypto.password.PasswordEncoder codificadorPassword
    • servicioJwt

      private final ServicioJwt servicioJwt
  • Constructor Details

    • AutenticacionService

      public AutenticacionService()
  • Method Details

    • loginEmpresa

      public RespuestaLoginDTO loginEmpresa(PeticionLoginDTO request)
      Realiza la autenticación centralizada para el perfil de Empresa.

      El proceso verifica la existencia de la cuenta por email y valida la contraseña mediante el codificador configurado. Si el acceso es válido, se emite un token JWT que contiene la identidad de la empresa y su rol administrativo.

      Parameters:
      request - Objeto PeticionLoginDTO con las credenciales de la empresa.
      Returns:
      RespuestaLoginDTO que incluye el token de sesión y los datos de perfil básicos.
      Throws:
      RuntimeException - Si el correo no existe o la contraseña es errónea.
    • loginEmpleado

      public RespuestaLoginDTO loginEmpleado(PeticionLoginDTO peticion)
      Realiza el proceso de autenticación integral para un Empleado.

      Además de la validación estándar de credenciales, este método aplica reglas de negocio críticas sobre el estado de la cuenta:

      • Verifica que el flag activo sea verdadero.
      • Comprueba que la fechaBajaContrato no haya sido superada (Contrato vigente).

      Si todas las validaciones son exitosas, emite un token JWT enriquecido con el rol específico (EMPLEADO, SUPERVISOR), el ID del empleado y el ID de su empresa.

      Parameters:
      peticion - Objeto PeticionLoginDTO con el email y password del trabajador.
      Returns:
      RespuestaLoginDTO con el token de acceso y la información de perfil para el frontend.
      Throws:
      RuntimeException - Si las credenciales fallan o si el empleado tiene el acceso bloqueado por cese laboral.