Kenmegne
7 days ago 1bc8864f134272c4bf23a9b05831803a423a4771
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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);
    }
 
}