JwtUserDetailsService.java 3.48 KB
Newer Older
1 2 3
package ec.edu.espe.movilidad.MovilidadWS.Security;

import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTUsuario;
4
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUserLogeado;
5 6 7
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTPerfilMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
8 9 10 11 12 13 14 15
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTUsuario;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

16 17 18
import java.util.HashSet;
import java.util.Set;

19 20 21 22 23
@Service
public class JwtUserDetailsService implements UserDetailsService {

    private final DaoUzyTUsuario userRepository;

24
    private final  UzyTPerfilMapper perfilMapper;
25

26
    @Autowired
27
    public JwtUserDetailsService(DaoUzyTUsuario userRepository, UzyTPerfilMapper perfilMapper) {
28
        this.userRepository = userRepository;
29
        this.perfilMapper = perfilMapper;
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
    }

    @Override
    public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
        ModelUzyTUsuario user = userRepository.findByEmail(email);
        if (user == null) {
            throw new UsernameNotFoundException("Usuario no encontrado");
        }

        return User
                .withUsername(user.getUzytusuario_email_institucional())
                .password("{noop}") // Cualquier contraseña, solo es para q no se vaya null
                .roles("USER") // Roles
                .build();
    }

46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
    public DtoUserLogeado getUserInfoByUsername(String username) {
        ModelUzyTUsuario user = userRepository.findByEmail(username);
        if (user == null) {
            throw new UsernameNotFoundException("Usuario no encontrado");
        }

        DtoUserLogeado userInfo = new DtoUserLogeado();
        userInfo.setUzytusuario_id(user.getUzytusuario_id());
        userInfo.setUzytusuario_clave(user.getUzytusuario_clave());
        userInfo.setUzytusuario_nombres(user.getUzytusuario_nombres());
        userInfo.setUzytusuario_email(user.getUzytusuario_email());
        userInfo.setUzytusuario_email_institucional(user.getUzytusuario_email_institucional());
        userInfo.setUzytusuario_apellidos(user.getUzytusuario_apellidos());
        userInfo.setUzytusuario_telefono_celular(user.getUzytusuario_telefono_celular());
        userInfo.setUzytusuario_telefono_fijo(user.getUzytusuario_telefono_fijo());
        userInfo.setSpriden_id(user.getSpriden_id());
62 63 64 65
        userInfo.setUzytusuario_CAMPUS_CODE(user.getUzytusuario_CAMPUS_CODE());
        userInfo.setUzytusuario_DEPARTAMENTO_CODE(user.getUzytusuario_DEPARTAMENTO_CODE());
        userInfo.setUzytusuario_CAMPUS_ABREV_CODE(user.getUzytusuario_CAMPUS_ABREV_CODE());
        userInfo.setUzytusuario_DPTO_ABREV_CODE(user.getUzytusuario_DPTO_ABREV_CODE());
66 67 68 69 70 71 72 73 74
        // Obtener el perfil asociado al usuario
        Set<ModelUzyTPerfil> perfiles = user.getUzytperfils();
        Set<DtoUzyTPerfil> dtoPerfiles = new HashSet<>();
        for (ModelUzyTPerfil perfil : perfiles) {
            DtoUzyTPerfil dtoPerfil = perfilMapper.entityToDto(perfil);
            dtoPerfiles.add(dtoPerfil);
        }
        userInfo.setPerfiles(dtoPerfiles);

75 76 77 78
        return userInfo;
    }


79 80
}