package com.megatim.apifdxweb.core.impl.administration;
|
|
import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
|
import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
|
import com.google.common.hash.Hashing;
|
import com.megatim.apifdxweb.core.ifaces.administration.RoleManager;
|
import com.megatim.apifdxweb.core.ifaces.administration.UserManager;
|
import com.megatim.apifdxweb.dao.ifaces.administration.UserDAO;
|
import com.megatim.apifdxweb.model.administration.User;
|
import com.megatim.apifdxweb.model.dtos.EditPasswordDto;
|
import com.megatim.fdxcommons.model.enumeration.EtatOperation;
|
import com.megatim.fdxcommons.model.enumeration.TypeOperation;
|
import com.megatim.fdxcommons.model.referentiel.Participant;
|
import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
|
import java.nio.charset.StandardCharsets;
|
import java.util.Date;
|
import javax.enterprise.context.Dependent;
|
import javax.inject.Inject;
|
|
@Dependent
|
public class UserManagerImpl extends AbstractGenericManager<User, Long> implements UserManager {
|
|
@Inject
|
protected UserDAO dao;
|
|
@Inject
|
protected RoleManager roleManager;
|
|
public UserManagerImpl() {
|
}
|
|
@Override
|
public GenericDAO<User, Long> getDao() {
|
return dao;
|
}
|
|
@Override
|
public String getEntityIdName() {
|
return "id";
|
}
|
|
@Override
|
public User recuperUtilisateur(String username, String motDePasse) {
|
return dao.recuperUtilisateur(username, motDePasse);
|
}
|
|
@Override
|
public User recuperUtilisateur(String username) {
|
return dao.recuperUtilisateur(username);
|
}
|
|
@Override
|
public void addUser(Participant participant, String token) {
|
|
User user = dao.getUser(participant.getCode());
|
if (user == null) {
|
user = new User();
|
user.setUserName(participant.getCode());
|
user.setFirstName(participant.getLibelle());
|
user.setLastName(participant.getCode());
|
user.setEtatOperation(EtatOperation.ACTIF);
|
user.setTypeOperation(TypeOperation.AJOUTER);
|
user.setDateCreation(new Date());
|
|
user.setPwd(token);
|
user.setParticipant(participant);
|
|
dao.save(user);
|
}
|
|
}
|
|
@Override
|
public void updateUser(Participant participant, String token) {
|
User user = dao.getUser(participant.getCode());
|
if (user != null) {
|
user.setDateDerniereModification(new Date());
|
user.setPwd(token);
|
dao.save(user);
|
}
|
}
|
|
@Override
|
public void lockUser(Participant participant) {
|
User user = dao.getUser(participant.getCode());
|
if (user != null) {
|
user.setLocked(true);
|
dao.save(user);
|
}
|
}
|
|
@Override
|
public void unLockUser(Participant participant) {
|
User user = dao.getUser(participant.getCode());
|
if (user != null) {
|
user.setLocked(false);
|
dao.save(user);
|
}
|
}
|
|
@Override
|
public void editPassword(String username, EditPasswordDto editPasswordDto) {
|
|
if (!editPasswordDto.getNewPassword().equals(editPasswordDto.getNewPasswordConfirm())) {
|
throw new CommonApplicationValidationException("Le nouveau mot de passe et le mote de passe de confirmation ne sont pas identiques.");
|
}
|
|
User user = recuperUtilisateur(username);
|
if (user == null) {
|
throw new CommonApplicationValidationException("Imposssible d'effectuer l'action: utilisateur non reconnu");
|
}
|
|
if (!Hashing.sha256().hashString(editPasswordDto.getActualPassword(), StandardCharsets.UTF_8).toString().equals(user.getPwd())) {
|
throw new CommonApplicationValidationException("Le mot de passe actuel est incorrect");
|
}
|
|
user.setPwd(Hashing.sha256().hashString(editPasswordDto.getNewPassword(), StandardCharsets.UTF_8).toString());
|
update(user.getId(), user);
|
}
|
|
}
|