From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation

---
 apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/administration/UserManagerImpl.java |  121 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 121 insertions(+), 0 deletions(-)

diff --git a/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/administration/UserManagerImpl.java b/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/administration/UserManagerImpl.java
new file mode 100644
index 0000000..e3ea761
--- /dev/null
+++ b/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/administration/UserManagerImpl.java
@@ -0,0 +1,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);
+    }
+
+}

--
Gitblit v1.10.0