From 73ec40cd66c59b68f2d292c991e0143866789f4c Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Mon, 18 Nov 2019 15:01:56 +0100
Subject: [PATCH] FEAT #12163 TIME 1:15 remove change_password column in users

---
 apps/maarch_entreprise/index.php              |   6 +-
 apps/maarch_entreprise/ozwilloConnect.php     |   2 +-
 apps/maarch_entreprise/sso_connect.php        | 267 +++++++------
 core/class/class_security.php                 |   1 -
 core/class/users_controler.php                | 109 +++---
 migration/19.12/1912.sql                      |   1 +
 .../ldap/process_users_entities_to_maarch.php | 279 +++++++-------
 modules/ldap/process_users_to_maarch.php      | 355 +++++++++---------
 sql/data_fr.sql                               |  48 +--
 sql/m2m_contacts_samples.sql                  |   2 +-
 sql/structure.sql                             |   1 -
 src/app/user/controllers/UserController.php   |   8 -
 src/app/user/models/UserModelAbstract.php     |   7 +-
 .../controllers/AuthenticationController.php  |   6 +-
 .../attachment/AttachmentControllerTest.php   |  21 +-
 .../unitTests/app/user/UserControllerTest.php |   9 -
 16 files changed, 539 insertions(+), 583 deletions(-)

diff --git a/apps/maarch_entreprise/index.php b/apps/maarch_entreprise/index.php
index 545a32aec0a..ff96d2a4b1c 100755
--- a/apps/maarch_entreprise/index.php
+++ b/apps/maarch_entreprise/index.php
@@ -335,7 +335,7 @@ if (!empty($_REQUEST['page']) && empty($_REQUEST['triggerAngular'])) {
         header('location: index.php?display=true&page=logout&logout=true');
         exit();
     }
-    $user = \User\models\UserModel::getByLogin(['login' => $cookie['userId'], 'select' => ['password_modification_date', 'change_password', 'status']]);
+    $user = \User\models\UserModel::getByLogin(['login' => $cookie['userId'], 'select' => ['password_modification_date', 'status']]);
 
     //HTML CONTENT OF ANGULAR
     echo \SrcCore\models\CoreConfigModel::initAngularStructure();
@@ -346,9 +346,7 @@ if (!empty($_REQUEST['page']) && empty($_REQUEST['triggerAngular'])) {
     $loggingMethod = \SrcCore\models\CoreConfigModel::getLoggingMethod();
     if (!in_array($loggingMethod['id'], ['sso', 'cas', 'ldap', 'ozwillo', 'shibboleth'])) {
         $passwordRules = \SrcCore\models\PasswordModel::getEnabledRules();
-        if ($user['change_password'] == 'Y') {
-            $_REQUEST['triggerAngular'] = 'changePass';
-        } elseif (!empty($passwordRules['renewal'])) {
+	if (!empty($passwordRules['renewal'])) {
             $currentDate = new \DateTime();
             $lastModificationDate = new \DateTime($user['password_modification_date']);
             $lastModificationDate->add(new DateInterval("P{$passwordRules['renewal']}D"));
diff --git a/apps/maarch_entreprise/ozwilloConnect.php b/apps/maarch_entreprise/ozwilloConnect.php
index 696c282697a..0a07da61e5f 100755
--- a/apps/maarch_entreprise/ozwilloConnect.php
+++ b/apps/maarch_entreprise/ozwilloConnect.php
@@ -34,7 +34,7 @@ if (empty($user)) {
     }
     $firstname = empty($profile->given_name) ? 'utilisateur' : $profile->given_name;
     $lastname = empty($profile->family_name) ? 'utilisateur' : $profile->family_name;
-    \User\models\UserModel::create(['user' => ['userId' => $idToken->sub, 'firstname' => $firstname, 'lastname' => $lastname, 'changePassword' => 'N']]);
+    \User\models\UserModel::create(['user' => ['userId' => $idToken->sub, 'firstname' => $firstname, 'lastname' => $lastname]]);
     $user = \User\models\UserModel::getByLogin(['login' => $idToken->sub]);
     \User\models\UserModel::addGroup(['id' => $user['id'], 'groupId' => $ozwilloConfig['groupId']]);
     \User\models\UserEntityModel::addUserEntity(['id' => $user['id'], 'entityId' => $ozwilloConfig['entityId'], 'primaryEntity' => 'Y']);
diff --git a/apps/maarch_entreprise/sso_connect.php b/apps/maarch_entreprise/sso_connect.php
index 0992020ab2f..b1ddb497021 100755
--- a/apps/maarch_entreprise/sso_connect.php
+++ b/apps/maarch_entreprise/sso_connect.php
@@ -1,9 +1,9 @@
 <?php
-require_once('core' . DIRECTORY_SEPARATOR . 'class' 
+require_once('core' . DIRECTORY_SEPARATOR . 'class'
     . DIRECTORY_SEPARATOR . 'class_core_tools.php');
-require_once('core' . DIRECTORY_SEPARATOR . 'class' 
+require_once('core' . DIRECTORY_SEPARATOR . 'class'
     . DIRECTORY_SEPARATOR . 'class_request.php');
-require_once('core' . DIRECTORY_SEPARATOR . 'class' 
+require_once('core' . DIRECTORY_SEPARATOR . 'class'
     . DIRECTORY_SEPARATOR . 'users_controler.php');
 require_once('core' . DIRECTORY_SEPARATOR . 'class'
     . DIRECTORY_SEPARATOR . 'class_security.php');
@@ -12,7 +12,7 @@ require_once('core' . DIRECTORY_SEPARATOR . 'core_tables.php');
 
 
 //Pour la gestion des TRACES
-require_once('core' . DIRECTORY_SEPARATOR . 'class' 
+require_once('core' . DIRECTORY_SEPARATOR . 'class'
     . DIRECTORY_SEPARATOR . 'class_history.php');
     
 //Pour les actions sur les entités
@@ -44,21 +44,21 @@ if (isset($_SESSION['HTTP_REQUEST'])) {
 
 /**********************************************************************/
 /**** TEST & RECUPERATION DU FICHIER DE CONFIG ****/
-if (file_exists($_SESSION['config']['corepath'] . 'custom' . 
-    DIRECTORY_SEPARATOR . $_SESSION['custom_override_id'] . 
-    DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . 
-    $_SESSION['config']['app_id'] . DIRECTORY_SEPARATOR . 'xml' . 
+if (file_exists($_SESSION['config']['corepath'] . 'custom' .
+    DIRECTORY_SEPARATOR . $_SESSION['custom_override_id'] .
+    DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR .
+    $_SESSION['config']['app_id'] . DIRECTORY_SEPARATOR . 'xml' .
     DIRECTORY_SEPARATOR . 'mapping_sso.xml')
-){
+) {
     $xmlPath = $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
     . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR . 'apps'
     . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
     . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'mapping_sso.xml';
 } elseif (file_exists($_SESSION['config']['corepath'] . 'apps'
     . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
-    . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 
+    . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR .
     'mapping_sso.xml')
-){
+) {
     $xmlPath = $_SESSION['config']['corepath'] .  'apps'
     . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
     . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'mapping_sso.xml';
@@ -81,7 +81,7 @@ $trace = new history();
 /**** OBLIGATORY ATTRIBUTES ****/
 
 // Read XML SSO CONFIG
-$xml = read_ssoXml($xmlPath,"ROOT",array("OBLIGATORY_USERUID",
+$xml = read_ssoXml($xmlPath, "ROOT", array("OBLIGATORY_USERUID",
                                      "OBLIGATORY_USERFIRSTNAME",
                                      "OBLIGATORY_USERLASTNAME",
                                      "OBLIGATORY_CODEUNIT",
@@ -92,44 +92,42 @@ $xml = read_ssoXml($xmlPath,"ROOT",array("OBLIGATORY_USERUID",
                                      "USER_SEP_TOKEN",
                                      "PROFIL_SEP_TOKEN",
                                      "ENTITY_SEP_TOKEN",
-                                     "CODE_USERUID",                                     
+                                     "CODE_USERUID",
                                      "CODE_USERFIRSTNAME",
-                                     "CODE_USERLASTNAME",                                    
+                                     "CODE_USERLASTNAME",
                                      "CODE_NIGEND",
                                      "CODE_CODEUNIT",
                                      "CODE_MAIL",
                                      "CODE_PROFIL",
                                      "CODE_ENTITY",
-                                     "CODE_DATABASE")); 
+                                     "CODE_DATABASE"));
    
 $loginArray = array();
 $recordProfils="";
 
-foreach($xml as $row) 
-{
-  $loginArray['userUidRequired'] = $row[0];
-  $loginArray['userFirstNameRequired'] = $row[1];
-  $loginArray['userLastNameRequired'] = $row[2];
-  $loginArray['codeUnitRequired'] = $row[3];
-  $loginArray['mailRequired'] = $row[4];
-  $loginArray['nigendRequired'] = $row[5];
-  $loginArray['profilRequired'] = $row[6];
-  $loginArray['entityRequired'] = $row[7];  
-  $loginArray['user_separator'] = $row[8];
-  $loginArray['profil_separator'] = $row[9];
-  $loginArray['entity_separator'] = $row[10];
+foreach ($xml as $row) {
+    $loginArray['userUidRequired'] = $row[0];
+    $loginArray['userFirstNameRequired'] = $row[1];
+    $loginArray['userLastNameRequired'] = $row[2];
+    $loginArray['codeUnitRequired'] = $row[3];
+    $loginArray['mailRequired'] = $row[4];
+    $loginArray['nigendRequired'] = $row[5];
+    $loginArray['profilRequired'] = $row[6];
+    $loginArray['entityRequired'] = $row[7];
+    $loginArray['user_separator'] = $row[8];
+    $loginArray['profil_separator'] = $row[9];
+    $loginArray['entity_separator'] = $row[10];
   
-  $loginArray['userUidRequiredError'] = $row[11];
-  $loginArray['userFirstNameRequiredError'] = $row[12];
-  $loginArray['userLastNameRequiredError'] = $row[13];
-  $loginArray['nigendRequiredError'] = $row[14];
-  $loginArray['codeUnitRequiredError'] = $row[15];
-  $loginArray['mailRequiredError'] = $row[16];
-  $loginArray['profilRequiredError'] = $row[17];
-  $loginArray['entityRequiredError'] = $row[18];
-  $loginArray['databaseError'] = $row[19];
+    $loginArray['userUidRequiredError'] = $row[11];
+    $loginArray['userFirstNameRequiredError'] = $row[12];
+    $loginArray['userLastNameRequiredError'] = $row[13];
+    $loginArray['nigendRequiredError'] = $row[14];
+    $loginArray['codeUnitRequiredError'] = $row[15];
+    $loginArray['mailRequiredError'] = $row[16];
+    $loginArray['profilRequiredError'] = $row[17];
+    $loginArray['entityRequiredError'] = $row[18];
+    $loginArray['databaseError'] = $row[19];
 }
-$loginArray['change_pass'] = 'N';
 
 /**********************************************************************/
 /**** GET HEADERS  ****/
@@ -138,29 +136,28 @@ $loginArray['change_pass'] = 'N';
 $headers = getHeaders() ;
 
 $profilArray = array();
-foreach ($headers as $k => $v) 
-{   
+foreach ($headers as $k => $v) {
     //DEBUG
-    //echo "$k = ".base64_decode($v)."<br/>\n" ;    
+    //echo "$k = ".base64_decode($v)."<br/>\n" ;
     
     switch ($k) {
         case "USER_UID":
-            $loginArray['userUid'] = base64_decode($v);             
-            break;  
+            $loginArray['userUid'] = base64_decode($v);
+            break;
 
             
         case "USER_FIRSTNAME":
             $loginArray['FirstName'] = base64_decode($v);
-            break;          
+            break;
 
             
         case "USER_LASTNAME":
             $loginArray['LastName'] = base64_decode($v);
-            break;          
+            break;
 
 
-        case "NIGEND":          
-            $loginArray['UserId'] = base64_decode($v);  
+        case "NIGEND":
+            $loginArray['UserId'] = base64_decode($v);
             break;
 
             
@@ -182,14 +179,14 @@ foreach ($headers as $k => $v)
             break;
             
             
-        case "ENTITIES":        
+        case "ENTITIES":
             $entityArray = fillEntityArray($loginArray, base64_decode($v));
-            $recordEntities=base64_decode($v);                      
+            $recordEntities=base64_decode($v);
                 
             $loginArray['Entities'] =$entityArray;
             //$loginArray['userEntity'] =$entityArray;
             break;
-    }    
+    }
 }
 
 /**********************************************************************/
@@ -197,67 +194,59 @@ foreach ($headers as $k => $v)
 
 $_SESSION['error'] = '';
 
-if ($loginArray['userUidRequired']=="true")
-{
+if ($loginArray['userUidRequired']=="true") {
     if (!$loginArray['userUid']) {
-    $_SESSION['error'] .= ' UID' . ' ' . _MISSING;
-    $errorId=$loginArray['userUidRequiredError'];
+        $_SESSION['error'] .= ' UID' . ' ' . _MISSING;
+        $errorId=$loginArray['userUidRequiredError'];
     }
 }
 
-if ($loginArray['userFirstNameRequired']=="true")
-{
+if ($loginArray['userFirstNameRequired']=="true") {
     if (!$loginArray['FirstName']) {
-    $_SESSION['error'] .= _FIRSTNAME . ' ' . _MISSING;
-    $errorId=$loginArray['userFirstNameRequiredError'];
+        $_SESSION['error'] .= _FIRSTNAME . ' ' . _MISSING;
+        $errorId=$loginArray['userFirstNameRequiredError'];
     }
 }
 
-if ($loginArray['userLastNameRequired']=="true")
-{
+if ($loginArray['userLastNameRequired']=="true") {
     if (!$loginArray['LastName']) {
-    $_SESSION['error'] .= _LASTNAME . ' ' . _MISSING;
-    $errorId=$loginArray['userLastNameRequiredError'];
+        $_SESSION['error'] .= _LASTNAME . ' ' . _MISSING;
+        $errorId=$loginArray['userLastNameRequiredError'];
     }
 }
 
-if ($loginArray['nigendRequired']=="true")
-{
+if ($loginArray['nigendRequired']=="true") {
     if (!$loginArray['UserId']) {
-    $_SESSION['error'] .= _NIGEND . ' ' . _MISSING;
-    $errorId=$loginArray['nigendRequiredError'];
+        $_SESSION['error'] .= _NIGEND . ' ' . _MISSING;
+        $errorId=$loginArray['nigendRequiredError'];
     }
 }
 
-if ($loginArray['codeUnitRequired']=="true")
-{
+if ($loginArray['codeUnitRequired']=="true") {
     if (!$loginArray['department']) {
-    $_SESSION['error'] .= _CODEUNIT . ' ' . _MISSING;
-    $errorId=$loginArray['codeUnitRequiredError'];  
+        $_SESSION['error'] .= _CODEUNIT . ' ' . _MISSING;
+        $errorId=$loginArray['codeUnitRequiredError'];
     }
 }
 
-if ($loginArray['mailRequired']=="true")
-{
+if ($loginArray['mailRequired']=="true") {
     if (!$loginArray['Mail']) {
-    $_SESSION['error'] .=_EMAIL . ' ' . _MISSING;
-    $errorId=$loginArray['mailRequiredError'];
+        $_SESSION['error'] .=_EMAIL . ' ' . _MISSING;
+        $errorId=$loginArray['mailRequiredError'];
     }
 }
 
-if ($loginArray['profilRequired']=="true")
-{
+if ($loginArray['profilRequired']=="true") {
     if (!$loginArray['userGroup']) {
-    $_SESSION['error'] .= _GROUP_ID . ' ' . _MISSING;
-    $errorId=$loginArray['profilRequiredError'];
+        $_SESSION['error'] .= _GROUP_ID . ' ' . _MISSING;
+        $errorId=$loginArray['profilRequiredError'];
     }
 }
 
-if ($loginArray['entityRequired']=="true")
-{
+if ($loginArray['entityRequired']=="true") {
     if (!$loginArray['Entities']) {
-    $_SESSION['error'] .= _ENTITY_ID . ' ' . _MISSING;
-    $errorId=$loginArray['entityRequiredError'];
+        $_SESSION['error'] .= _ENTITY_ID . ' ' . _MISSING;
+        $errorId=$loginArray['entityRequiredError'];
     }
 }
 
@@ -266,15 +255,18 @@ if ($loginArray['entityRequired']=="true")
 
 if (isset($_SESSION['error']) && $_SESSION['error'] <> '') {
         
-    //Traces techniques     
-    $trace->add("users",
+    //Traces techniques
+    $trace->add(
+        "users",
                 $loginArray['UserId'],
-                "LOGIN", 'userlogin',
-                _CONNECTION_SSO_FAILED . 
+                "LOGIN",
+        'userlogin',
+                _CONNECTION_SSO_FAILED .
                 " CodeError " . $errorId . " : " .$_SESSION['error'],
                 $_SESSION['config']['databasetype'],
                 "ADMIN",
-                true);
+                true
+    );
                 
     header("location: " . $loginRequestArray['WEB_SSO_URL']
      . "index.php?errorId=" . $errorId
@@ -289,7 +281,7 @@ $temoinUpdate = 0;// Témoin Update pour conserver le format du password
                   //et ne pas toucher à log.php
                   
 $db = new Database();
-$query = "SELECT user_id FROM " . USERS_TABLE 
+$query = "SELECT user_id FROM " . USERS_TABLE
        . " WHERE user_id = ?";
 $stmt = $db->query($query, array($loginArray['UserId']));
 
@@ -301,7 +293,7 @@ $loginArray['password'] = '$' . $loginArray['UserId'] . '*';
 
 /*** Fill user object to update it ***/
 $userObject = fillUserObject($loginArray);
-$groupArray = fillGroupArray($loginArray,$recordProfils);
+$groupArray = fillGroupArray($loginArray, $recordProfils);
 
 //DEBUG
 //var_dump($userObject);
@@ -326,27 +318,29 @@ if ($stmt->rowCount() > 0) {
     //user exists, so update it
     $control = $uc->save($userObject, $groupArray, 'up', $params);
     $temoinUpdate = 1;
-} else {    
+} else {
     //user doesn't exists, so create it
     $control = $uc->save($userObject, $groupArray, 'add', $params);
 }
-if($temoinUpdate > 0){
+if ($temoinUpdate > 0) {
     $userObject->password = $loginArray['password'];
 }
 
-if(!empty($control['error']) && $control['error'] <> 1) {
+if (!empty($control['error']) && $control['error'] <> 1) {
     //echo $control['error'];exit;
 
     //Traces fonctionnelles
-    $trace->add("users",
+    $trace->add(
+        "users",
                 $loginArray['UserId'],
                 "LOGIN",
-                _CONNECTION_SSO_FAILED . 
-                " CodeError " . $loginArray['databaseError'] . 
+                _CONNECTION_SSO_FAILED .
+                " CodeError " . $loginArray['databaseError'] .
                 " : " .$_SESSION['error'],
                 $_SESSION['config']['databasetype'],
                 "ADMIN",
-                true);
+                true
+    );
     header("location: " . $loginRequestArray['WEB_SSO_URL']
             . "index.php?errorId=" . $loginArray['databaseError']);
     exit;
@@ -356,8 +350,10 @@ if(!empty($control['error']) && $control['error'] <> 1) {
     //fill user entities
     $entityCtrl = new EntityControler();
     $entityCtrl->cleanUsersentities($loginArray['UserId'], 'user_id');
-    $entityCtrl->loadDbUsersentities($loginArray['UserId'], 
-                                     $entityArray);
+    $entityCtrl->loadDbUsersentities(
+        $loginArray['UserId'],
+                                     $entityArray
+    );
 
 
     // Get the corresponding services
@@ -367,26 +363,28 @@ if(!empty($control['error']) && $control['error'] <> 1) {
     $core_tools = new core_tools();
 
     $business_app_tools->load_app_var_session($loginArray);
-    $core_tools->load_var_session($_SESSION['modules'], $loginArray);   
-    $loginArray['services'] = 
-            $serv_controler->loadUserServices($loginArray['UserId']);       
+    $core_tools->load_var_session($_SESSION['modules'], $loginArray);
+    $loginArray['services'] =
+            $serv_controler->loadUserServices($loginArray['UserId']);
         
         
-/**********************************************************************/
-/**** CONNECTION A MAARCH ****/
+    /**********************************************************************/
+    /**** CONNECTION A MAARCH ****/
     $_SESSION['web_sso_url'] = $loginRequestArray['WEB_SSO_URL'];
     $_SESSION['sso']['userId'] = $loginArray['UserId'];
     header("location: " . $_SESSION['config']['businessappurl']
         . "log.php");
 
     //Traces fonctionnelles
-    $trace->add("users",
+    $trace->add(
+        "users",
                 $loginArray['UserId'],
                 "LOGIN",
                 _CONNECTION_SSO_OK,
                 $_SESSION['config']['databasetype'],
                 "ADMIN",
-                false);
+                false
+    );
     exit();
 }
 
@@ -405,19 +403,18 @@ function fillUserObject($loginArray)
     $user->department = $loginArray['department'];
     $user->mail = $loginArray['Mail'];
     $user->loginmode = 'sso';
-    $user->change_password = 'N';
     return $user;
 }
 
 // Function to separate Last Name & First Name
 function fillUserArray($sep, $nameConcat)
-{    
-    $fullName = array();  
-    $tmp = array();  
+{
+    $fullName = array();
+    $tmp = array();
     $tmp = explode($sep, $nameConcat);
 
     $fullName['FIRSTNAME'] =  $tmp[0];
-    $fullName['LASTNAME'] =  $tmp[1];               
+    $fullName['LASTNAME'] =  $tmp[1];
 
     return $fullName;
 }
@@ -427,7 +424,7 @@ function fillProfilArray($loginArray, $headerProfil)
 {
     $groupArray = array();
     $tmp = array();
-    $tmp = explode($loginArray['profil_separator'],$headerProfil);
+    $tmp = explode($loginArray['profil_separator'], $headerProfil);
 
     for ($cpt = 0;$cpt < count($tmp);$cpt++) {
         if ($cpt == 0) {
@@ -443,7 +440,7 @@ function fillProfilArray($loginArray, $headerProfil)
                 'ROLE' =>  '',
             )
         );
-    }   
+    }
     return $groupArray;
 }
 
@@ -452,7 +449,7 @@ function fillEntityArray($loginArray, $headerEntity)
 {
     $entityArray = array();
     $tmp = array();
-    $tmp = explode($loginArray['entity_separator'],$headerEntity);
+    $tmp = explode($loginArray['entity_separator'], $headerEntity);
 
     for ($cpt = 0;$cpt < count($tmp);$cpt++) {
         if ($cpt == 0) {
@@ -468,48 +465,48 @@ function fillEntityArray($loginArray, $headerEntity)
                 'ROLE' =>  '',
             )
         );
-    }   
+    }
     return $entityArray;
 }
 
 // Function to collect all headers
-function getHeaders() 
+function getHeaders()
 {
-    foreach ($_SERVER as $h => $v ) 
-    {
-        if( strpos($h, 'HTTP_') === 0)
-        $headers[substr($h, 5)] = $v ;
+    foreach ($_SERVER as $h => $v) {
+        if (strpos($h, 'HTTP_') === 0) {
+            $headers[substr($h, 5)] = $v ;
+        }
         // $headers[$h] = $v;
     }
     return $headers;
 }
 
 // Get the XML
-function read_ssoXml($fichier,$item,$champs) {
-   if($chaine = @implode("",@file($fichier))) 
-   {
-      $tmp = preg_split("/<\/?".$item.">/",$chaine);
-
-      for($i=1;$i<sizeof($tmp)-1;$i+=2)
-         foreach($champs as $champ) 
-         {
-            $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
-            $tmp3[$i-1][] = @$tmp2[1];
-         }
-      return $tmp3;
-   }
+function read_ssoXml($fichier, $item, $champs)
+{
+    if ($chaine = @implode("", @file($fichier))) {
+        $tmp = preg_split("/<\/?".$item.">/", $chaine);
+
+        for ($i=1;$i<sizeof($tmp)-1;$i+=2) {
+            foreach ($champs as $champ) {
+                $tmp2 = preg_split("/<\/?".$champ.">/", $tmp[$i]);
+                $tmp3[$i-1][] = @$tmp2[1];
+            }
+        }
+        return $tmp3;
+    }
 }
 
 
 // Function to record groups in the array (in order to update users)
-function fillGroupArray($loginArray,$recordProfils)
+function fillGroupArray($loginArray, $recordProfils)
 {
     $groupArray = [];
 
     if (empty($loginArray['profil_separator'])) {
         return [];
     }
-    $tmp = explode($loginArray['profil_separator'],$recordProfils);
+    $tmp = explode($loginArray['profil_separator'], $recordProfils);
 
     //$tmp = $loginArray['userGroup'];
 
@@ -526,7 +523,7 @@ function fillGroupArray($loginArray,$recordProfils)
             array(
                 'USER_ID' =>  $loginArray['UserId'],
                 'GROUP_ID' =>  $tmp[$cpt],
-                'PRIMARY' =>  $primaryGroup,                
+                'PRIMARY' =>  $primaryGroup,
                 'ROLE' =>  '',
             )
         );
diff --git a/core/class/class_security.php b/core/class/class_security.php
index 6e998737e78..b8e25ac98d2 100755
--- a/core/class/class_security.php
+++ b/core/class/class_security.php
@@ -163,7 +163,6 @@ class security extends Database
                     }
                 }
                 $array = array(
-                    'change_pass' => $user->__get('change_password'),
                     'UserId' => $user->__get('user_id'),
                     'FirstName' => $user->__get('firstname'),
                     'LastName' => $user->__get('lastname'),
diff --git a/core/class/users_controler.php b/core/class/users_controler.php
index f1079315d0a..4279ae8a112 100755
--- a/core/class/users_controler.php
+++ b/core/class/users_controler.php
@@ -39,7 +39,7 @@ try {
     require_once('core' . DIRECTORY_SEPARATOR . 'class'
         . DIRECTORY_SEPARATOR . 'class_security.php');
     require_once 'modules/entities/class/class_users_entities.php';
-} catch (Exception $e){
+} catch (Exception $e) {
     functions::xecho($e->getMessage()) . ' // ';
 }
 
@@ -89,10 +89,11 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         $result = $db->query($query, array($userId));
         $lastname = $result->fetchObject();
 
-        if (isset($lastname))
+        if (isset($lastname)) {
             return $lastname->lastname;
-        else
+        } else {
             return null;
+        }
     }
 
     public function getFirstName($userId)
@@ -104,10 +105,11 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         $result = $db->query($query, array($userId));
         $firstname = $result->fetchObject();
 
-        if (isset($firstname))
+        if (isset($firstname)) {
             return $firstname->firstname;
-        else
+        } else {
             return null;
+        }
     }
 
 
@@ -126,7 +128,7 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         $user = self::advanced_getWithComp($userId, USERS_TABLE, $compWhere, $params);
 
         if (isset($user)
-            && ($user->__get('status') == 'OK' 
+            && ($user->__get('status') == 'OK'
             || $user->__get('status') == 'ABS')
         ) {
             return $user;
@@ -145,18 +147,20 @@ class users_controler extends ObjectControler implements ObjectControlerIF
     *   otherwise returns even the disabled (true by default)
     * @return Array of user objects with properties from the database
     */
-    public function getAllUsers($orderStr='order by user_id asc',
-        $enabledOnly=true)
-    {
+    public function getAllUsers(
+        $orderStr='order by user_id asc',
+        $enabledOnly=true
+    ) {
         $db = new Database();
         $query = 'select * from ' . USERS_TABLE .' ';
         if ($enabledOnly) {
             $query .= "where enabled = 'Y'";
         }
         $query .= $orderStr;
-        try{
+        try {
             $stmt = $db->query($query);
-        } catch (Exception $e){}
+        } catch (Exception $e) {
+        }
 
         $users = array();
         while ($res = $stmt->fetchObject()) {
@@ -192,12 +196,12 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         $query = 'select u.group_id, uc.role from usergroup_content uc, usergroups u where uc.user_id = ? and uc.group_id = u.id ';
         try {
             $stmt = self::$db->query($query, array($userUse['id']));
-        } catch (Exception $e){
+        } catch (Exception $e) {
             echo _NO_USER_WITH_ID.' '.functions::xssafe($userId).' // ';
         }
         while ($res = $stmt->fetchObject()) {
             array_push(
-                $groups, 
+                $groups,
                 array(
                     'USER_ID' => $userId,
                     'GROUP_ID' => $res->group_id,
@@ -245,13 +249,13 @@ class users_controler extends ObjectControler implements ObjectControlerIF
             $control = array(
                 'status' => 'ko',
                 'value'  => '',
-                'error'  => _USER_EMPTY,          
+                'error'  => _USER_EMPTY,
             );
             return $control;
         }
         // If mode not up or add, return an error
-        if (! isset($mode) || empty($mode) 
-            || ($mode <> 'add' && $mode <> 'up' )
+        if (! isset($mode) || empty($mode)
+            || ($mode <> 'add' && $mode <> 'up')
         ) {
             $control = array(
                 'status' => 'ko',
@@ -273,7 +277,9 @@ class users_controler extends ObjectControler implements ObjectControlerIF
             $_SESSION['service_tag'] = 'user_' . $mode;
             if (isset($params['modules_services'])) {
                 $core->execute_modules_services(
-                    $params['modules_services'], 'users_add_db', 'include'
+                    $params['modules_services'],
+                    'users_add_db',
+                    'include'
                 );
             }
             if ($mode == 'up') {
@@ -287,7 +293,10 @@ class users_controler extends ObjectControler implements ObjectControlerIF
                     if ($params['log_user_up'] == 'true') {
                         $history = new history();
                         $history->add(
-                            USERS_TABLE, $user->user_id, 'UP', 'usersup',
+                            USERS_TABLE,
+                            $user->user_id,
+                            'UP',
+                            'usersup',
                             _USER_UPDATE . ' : ' . $user->user_id,
                             $params['databasetype']
                         );
@@ -309,7 +318,10 @@ class users_controler extends ObjectControler implements ObjectControlerIF
                     if ($params['log_user_add'] == 'true') {
                         $history = new history();
                         $history->add(
-                            USERS_TABLE, $user->user_id, 'ADD', 'usersadd',
+                            USERS_TABLE,
+                            $user->user_id,
+                            'ADD',
+                            'usersadd',
                             _USER_ADDED . ' : ' . $user->user_id,
                             $params['databasetype']
                         );
@@ -393,10 +405,6 @@ class users_controler extends ObjectControler implements ObjectControlerIF
             $sec = new security();
             $user->password =  $sec->getPasswordHash($params['userdefaultpassword']);
 
-            if($_SESSION['config']['ldap'] == "true" || isset($_SESSION['web_cas_url']) || isset($_SESSION['web_sso_url'])){
-                $user->change_password = "N";
-            }
-
             if (self::userExists($user->user_id)) {
                 $error .= _USER . ' ' . _ALREADY_EXISTS;
             }
@@ -430,7 +438,9 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         $core = new core_tools();
         if (isset($params['modules_services'])) {
             $core->execute_modules_services(
-                $params['modules_services'], 'user_check', 'include'
+                $params['modules_services'],
+                'user_check',
+                'include'
             );
         }
         $error .= $_SESSION['error'];
@@ -493,12 +503,12 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         self::$db = new Database();
         $func = new functions();
         $query = 'select user_id from ' . USERS_TABLE . " where user_id = ? and status<>'DEL'";
-        try{
+        try {
             $stmt = self::$db->query($query, array($userId));
-        } catch (Exception $e){
+        } catch (Exception $e) {
             echo _UNKNOWN . ' ' . _USER . ' ' . functions::xssafe($userId) . ' // ';
         }
-        if ($stmt->rowCount() > 0) {   
+        if ($stmt->rowCount() > 0) {
             return true;
         }
         
@@ -538,7 +548,10 @@ class users_controler extends ObjectControler implements ObjectControlerIF
             ) {
                 $history = new history();
                 $history->add(
-                    USERS_TABLE, $user->user_id, 'BAN', 'usersban',
+                    USERS_TABLE,
+                    $user->user_id,
+                    'BAN',
+                    'usersban',
                     _SUSPENDED_USER . ' : ' . $user->lastname . ' '
                     . $user->firstname . ' (' . $user->user_id . ')',
                     $params['databasetype']
@@ -586,7 +599,10 @@ class users_controler extends ObjectControler implements ObjectControlerIF
             ) {
                 $history = new history();
                 $history->add(
-                    USERS_TABLE, $user->user_id, 'VAL', 'usersval',
+                    USERS_TABLE,
+                    $user->user_id,
+                    'VAL',
+                    'usersval',
                     _AUTORIZED_USER .' : ' . $user->lastname . ' '
                     . $user->firstname . ' (' . $user->user_id . ')',
                     $params['databasetype']
@@ -602,21 +618,6 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         return $control;
     }
 
-    public function changePassword($userId, $newPassword)
-    {
-        if (! isset($userId) || empty($userId) || ! isset($newPassword) 
-            || empty($newPassword)
-        ) {
-            return false;
-        }
-        self::$db = new Database();
-        $func = new functions();
-        $query = 'update ' . USERS_TABLE 
-            . " set password = ?, change_password = 'Y' where user_id = ?";
-        $stmt = self::$db->query($query, array($newPassword, $userId));
-        return $stmt;
-    }
-
     /**
     * Asserts if a given user (user_id) is deleted in the database
     *
@@ -633,7 +634,7 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         $query = 'select user_id from ' . USERS_TABLE . " where lower(user_id) = lower(?) and status = 'DEL'";
         try {
             $stmt = self::$db->query($query, array($userId));
-        } catch (Exception $e){
+        } catch (Exception $e) {
             echo _UNKNOWN . ' ' . _USER . ' ' . functions::xssafe($userId) . ' // ';
         }
         if ($stmt->rowCount() > 0) {
@@ -654,13 +655,13 @@ class users_controler extends ObjectControler implements ObjectControlerIF
         $user = self::_isAUser($user);
         self::set_foolish_ids(array('user_id', 'docserver_location_id'));
         self::set_specific_id('user_id');
-        if(self::advanced_reactivate($user)){
+        if (self::advanced_reactivate($user)) {
             self::$db = new Database();
             $query = "update users set user_id = ? where lower(user_id)=lower(?)";
             $stmt = self::$db->query($query, array($user->user_id, $user->user_id));
             return true;
-        }else{
-          return false;
+        } else {
+            return false;
         }
     }
 
@@ -683,15 +684,15 @@ class users_controler extends ObjectControler implements ObjectControlerIF
                     FROM users_entities ue, entities e 
                     WHERE ue.user_id = ? and e.enabled = 'Y' and e.entity_id = ue.entity_id
                     ORDER BY primary_entity desc";
-                    // set primary entity to the first row
+        // set primary entity to the first row
         try {
             $stmt = self::$db->query($query, array($userId));
-        } catch (Exception $e){
+        } catch (Exception $e) {
             echo _NO_USER_WITH_ID.' '.functions::xssafe($userId).' // ';
         }
         while ($res = $stmt->fetchObject()) {
             array_push(
-                $entities, 
+                $entities,
                 array(
                     'USER_ID' => $userId,
                     'ENTITY_ID' => $res->entity_id,
@@ -710,7 +711,8 @@ class users_controler extends ObjectControler implements ObjectControlerIF
     * @param  $userId string  $entityType string
     * @return Array or null
     */
-   public function getParentEntitiesWithType($userId, $entityType) {
+    public function getParentEntitiesWithType($userId, $entityType)
+    {
         $userEntities = self::getEntities($userId);
         $parentEntitiesWithType = array();
 
@@ -726,7 +728,7 @@ class users_controler extends ObjectControler implements ObjectControlerIF
                 $res = $stmt->fetchObject();
                 if (!$res) {
                     $isRightEntityType = true;
-                } else if ($res->entity_type == $entityType) {
+                } elseif ($res->entity_type == $entityType) {
                     if (!in_array($entity, $parentEntitiesWithType)) {
                         $parentEntitiesWithType[] = $entity;
                     }
@@ -739,5 +741,4 @@ class users_controler extends ObjectControler implements ObjectControlerIF
 
         return $parentEntitiesWithType;
     }
-
 }
diff --git a/migration/19.12/1912.sql b/migration/19.12/1912.sql
index 9430fb9706a..b42879eb70b 100644
--- a/migration/19.12/1912.sql
+++ b/migration/19.12/1912.sql
@@ -15,6 +15,7 @@ DROP VIEW IF EXISTS view_folders;
 
 /*USERS*/
 ALTER TABLE users DROP COLUMN IF EXISTS reset_token;
+ALTER TABLE users DROP COLUMN IF EXISTS change_password;
 ALTER TABLE users ADD COLUMN reset_token text;
 
 /* FULL TEXT */
diff --git a/modules/ldap/process_users_entities_to_maarch.php b/modules/ldap/process_users_entities_to_maarch.php
index cf7564e698c..6798dfcf8ce 100755
--- a/modules/ldap/process_users_entities_to_maarch.php
+++ b/modules/ldap/process_users_entities_to_maarch.php
@@ -7,31 +7,21 @@ $nomFichier = date('Y-m-d_H-i-s') . '.log'; //nom du fichier log enregistrer dan
 $fichier = 'ldap_users';
 
 echo "... CHARGEMENT DU FICHIER DE CONFIGURATION ...\n";
-if( !isset($argv) ){
-
+if (!isset($argv)) {
     exit(htmlentities("Ce script ne peut-etre appelé qu'en PHP CLI"));
-
-}else if( isset($argv) && count($argv) < 2){
-
+} elseif (isset($argv) && count($argv) < 2) {
     exit("Erreur de Syntaxe !\nLa syntaxe est $argv[0] <fichier de conf xml> <xml de sortie>\n\n");
-
-}else if(!file_exists($argv[1])){
-
+} elseif (!file_exists($argv[1])) {
     exit("/!\ Le fichier de configuration n'existe pas!\n\n");
-
-}else{
-
+} else {
     $ldap_conf_file = trim($argv[1]);
     echo "Fichier OK !\n\n";
 }
 //Extraction de /root/config dans le fichier de conf
 $ldap_conf = new DomDocument();
-try
-{
+try {
     $ldap_conf->load($ldap_conf_file);
-}
-catch(Exception $e)
-{ 
+} catch (Exception $e) {
     exit("/!\ Impossible de charger le document : ".$ldap_conf_file."\n
         Erreur : ".$e.getMessage."\n\n");
 }
@@ -41,13 +31,11 @@ catch(Exception $e)
 //**********************************//
 $i=0;
 $xp_ldap_conf = new domxpath($ldap_conf);
-foreach( $xp_ldap_conf->query("/root/filter/dn/@id") as $dn)
-{
-
+foreach ($xp_ldap_conf->query("/root/filter/dn/@id") as $dn) {
     $type = $xp_ldap_conf->query("/root/filter/dn[@id= '".$dn->nodeValue."']/@type")->item(0)->nodeValue;    //echo "for each filter ok\n";
     //$dn_and_filter[$i][$dn->nodeName] = $dn->nodeValue;
     //echo "nodename : ".$dn_and_filter[$i][$dn->nodeName]."\n";
-    if($type=='entities'){
+    if ($type=='entities') {
         $dn_and_filter[$i]['id'] = $dn->nodeValue;
     }
 }
@@ -76,8 +64,7 @@ echo "... CONNEXION A LA BASE DE DONNEES MAARCH ...\n";
 try {
     $db = new PDO("pgsql:host=$host;dbname=$dbname", "$user", "$password");
     echo 'Connexion OK'."\n\n";
-}
-catch(PDOException $e) {
+} catch (PDOException $e) {
     $db = null;
     echo '/!\ Erreur de connexion: ' . $e->getMessage()."\n\n";
     exit;
@@ -85,21 +72,25 @@ catch(PDOException $e) {
 
 $xp_ldap_conf = new domxpath($ldap_conf);
 
-foreach($xp_ldap_conf->query("/root/config/ldap/*") as $cf)
+foreach ($xp_ldap_conf->query("/root/config/ldap/*") as $cf) {
     ${$cf->nodeName} = $cf->nodeValue;
+}
 
 //Si une class custom est définie
 
-if( file_exists(dirname($ldap_conf_file)."/../class/class_".$type_ldap.".php") )
+if (file_exists(dirname($ldap_conf_file)."/../class/class_".$type_ldap.".php")) {
     include(dirname($ldap_conf_file)."/../class/class_".$type_ldap.".php");
+}
 
-//Sinon si la class est définie pour le module  
-else if( file_exists(dirname($ldap_conf_file)."/../../../../../modules/ldap/class/class_".$type_ldap.".php") )
+//Sinon si la class est définie pour le module
+elseif (file_exists(dirname($ldap_conf_file)."/../../../../../modules/ldap/class/class_".$type_ldap.".php")) {
     include(dirname($ldap_conf_file)."/../../../../../modules/ldap/class/class_".$type_ldap.".php");
+}
 
 //Sinon
-else
+else {
     exit("Impossible de charger class_".$type_ldap.".php\n");
+}
 
 //**********************************//
 //          LDAP CONNECTION         //
@@ -107,16 +98,13 @@ else
 
 echo "... CONNEXION A L'ANNUAIRE $type_ldap ...\n";
 //Try to create a new ldap instance
-try
-{
-    if($prefix_login != ''){
+try {
+    if ($prefix_login != '') {
         $login_admin =$prefix_login."\\".$login_admin;
     }
-    $ad = new LDAP($domain,$login_admin,$pass,false);
+    $ad = new LDAP($domain, $login_admin, $pass, false);
     echo "Connexion Ldap ok\n\n";
-}
-catch(Exception $con_failure)
-{
+} catch (Exception $con_failure) {
     exit("/!\ Impossible de se connecter à l'annuaire\n
         Erreur : ".$con_failure->getMessage()."\n\n");
 }
@@ -126,18 +114,17 @@ Les Fonctions
 */
 
 
-/* 
+/*
 Fonction qui permet de récupérer l'information de la balise concernée dans le fichier xml
 **/
 function infoBalise($description, $balise)
 {
-    if($description == NULL) {
+    if ($description == null) {
         return $contenu = '';
-
-    }else{
-        $contenu = NULL;
+    } else {
+        $contenu = null;
         $contenubalise = $description ->getElementsByTagName($balise);
-        foreach($contenubalise as $contenu){
+        foreach ($contenubalise as $contenu) {
             $contenu = $contenu->firstChild->nodeValue . "";
         }
         //echo $contenu."\n";
@@ -147,69 +134,77 @@ function infoBalise($description, $balise)
 
 
     /*Fonction qui va llire les memberofs du ldap.xml*/
-    function infoMemberOf($description, $balise,$OU)
+    function infoMemberOf($description, $balise, $OU)
     {
-        if($description == NULL) {
-            return $contenu = '';}
-            else{
-                $contenu = NULL;
-                $contenubalise = $description ->getElementsByTagName($balise);
-                foreach($contenubalise as $contenu)
-                    $contenu = $contenu->firstChild->nodeValue . "";
-                $nomGroupe = strstr($contenu, $OU, true);
-                if($nomGroupe != false and $contenu != null){return $contenu;}elseif($nomGroupe == false and $contenu == null){return null;}elseif($nomGroupe == false and $contenu !=null){return ok;}
+        if ($description == null) {
+            return $contenu = '';
+        } else {
+            $contenu = null;
+            $contenubalise = $description ->getElementsByTagName($balise);
+            foreach ($contenubalise as $contenu) {
+                $contenu = $contenu->firstChild->nodeValue . "";
+            }
+            $nomGroupe = strstr($contenu, $OU, true);
+            if ($nomGroupe != false and $contenu != null) {
+                return $contenu;
+            } elseif ($nomGroupe == false and $contenu == null) {
+                return null;
+            } elseif ($nomGroupe == false and $contenu !=null) {
+                return ok;
             }
         }
+    }
 
 
         /*Fonction qui va vérifier si l'utilisateur est dans la table des users ou non*/
         function verifUser($user_id, $db)
         {
-            $qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?)"); 
+            $qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?)");
             $qry->execute(array($user_id));
-            while ($row = $qry->fetch()){
+            while ($row = $qry->fetch()) {
                 $user_id = $row['user_id'];
-                if($user_id == null){echo "le pseudo $user_id n'a pas été trouvé dans la base !";
-                return false; }else{echo "le pseudo $user_id a été trouvé dans la base";
-                return true;}
+                if ($user_id == null) {
+                    echo "le pseudo $user_id n'a pas été trouvé dans la base !";
+                    return false;
+                } else {
+                    echo "le pseudo $user_id a été trouvé dans la base";
+                    return true;
+                }
             }
         }
 
         /*Fonction qui va vérifier les données de l'utilisateur dans la table users. Si il y a des données qui ne sont pas à jour, la fonction fait le update pour mettre à jour. */
-        function verifUpdate($user_id,$firstname,$lastname,$phone,$mail,$employeNumber,$db)
+        function verifUpdate($user_id, $firstname, $lastname, $phone, $mail, $employeNumber, $db)
         {
-
-            $qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?) and firstname = ? and lastname = ? and phone = ? and mail = ? and custom_t3 = ? and status = 'OK'");   
+            $qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?) and firstname = ? and lastname = ? and phone = ? and mail = ? and custom_t3 = ? and status = 'OK'");
             $qry->execute(array($user_id,$firstname,$lastname,$phone,$mail,$employeNumber));
             $result = $qry->fetchAll();
-            if($result==null){
-
+            if ($result==null) {
                 echo "les donnees doivent etre mis a jour !";
-                $qry = $db->prepare("UPDATE users set  user_id = ?, firstname = ? , lastname = ? , phone = ? , mail = ?,custom_t3 = ?, status = 'OK', loginmode = 'standard' where upper(user_id) = upper(?) ");    
+                $qry = $db->prepare("UPDATE users set  user_id = ?, firstname = ? , lastname = ? , phone = ? , mail = ?,custom_t3 = ?, status = 'OK', loginmode = 'standard' where upper(user_id) = upper(?) ");
                 $result = $qry->execute(array($user_id,$firstname,$lastname,$phone,$mail,$employeNumber,$user_id));
                 $result = $qry->fetchAll();
-                if($result==null){
+                if ($result==null) {
                     echo "Error, données non mises à jours!";
-                }else{
+                } else {
                     echo "données mises à jour!";
                 }
-            }else{
+            } else {
                 echo "les donnees de users sont a jour \n";
                 return true;
             }
         }
 
         /*Function qui va insérer l'utilisateur dans la table des users. Si l'utilisateur n'est pas présent, on lui done le mot de passe de maarch*/
-        function insertUser($user_id,$firstname,$lastname,$phone,$mail,$employeNumber,$db)
+        function insertUser($user_id, $firstname, $lastname, $phone, $mail, $employeNumber, $db)
         {
-
-            $qry = $db->prepare("INSERT into users (user_id, password, firstname, lastname, phone, mail, custom_t3, enabled, change_password, status,loginmode) values (upper(?),'ef9689be896dacd901cae4f13593e90d',?,?,?,?,?,'Y','Y','OK','standard')");   
+            $qry = $db->prepare("INSERT into users (user_id, password, firstname, lastname, phone, mail, custom_t3, enabled, status,loginmode) values (upper(?),'ef9689be896dacd901cae4f13593e90d',?,?,?,?,?,'Y','OK','standard')");
             $qry->execute(array($user_id,$firstname,$lastname,$phone,$mail,$employeNumber));
             $result = $qry->fetchAll();
-            if($result==null){
+            if ($result==null) {
                 echo "Error : les donnees n'ont pas ete ajouté !\n";
                 return false;
-            }else{
+            } else {
                 echo "la ligne a été ajouté \n";
                 return true;
             }
@@ -217,22 +212,21 @@ function infoBalise($description, $balise)
 
 
         /*Fonction qui va supprimer tous les users de la table users_entities lorsque les entitées ne sont pas présente dans le ldap*/
-        function deleteUsersEntities($idEntitiesTab,$user_id, $db)
+        function deleteUsersEntities($idEntitiesTab, $user_id, $db)
         {
-
             $qry ="SELECT * from users_entities where user_id ='$user_id' and ";
-            $qry .= " entity_id not in ('".implode("','",$idEntitiesTab)."')";
+            $qry .= " entity_id not in ('".implode("','", $idEntitiesTab)."')";
             $qry = $db->prepare($qry);
             $qry->execute();
             $result = $qry->fetchAll();
-            if(!empty($result)){
+            if (!empty($result)) {
                 echo "Dissociation des anciens services affectes aux utilisateurs ...\n";
                 $qry = "delete from users_entities where user_id ='$user_id' and ";
-                $qry .= " entity_id not in ('".implode("','",$idEntitiesTab)."')";
+                $qry .= " entity_id not in ('".implode("','", $idEntitiesTab)."')";
                 $qry = $db->prepare($qry);
                 $qry->execute();
                 $result = $qry->fetchAll();
-            }else{
+            } else {
                 echo "les services sont a jour pour l'utilisateur $user_id! \n";
             }
         }
@@ -240,60 +234,63 @@ function infoBalise($description, $balise)
 
 
         /*Fontion qui va écrire dans le fichier log . Cela permet de faire un suivie du processus*/
-        function ecrire_log($event,$nomFichier){
+        function ecrire_log($event, $nomFichier)
+        {
 
 /*        $fp = fopen('var/www/html/maarch_entreprise_prod/modules/ldap/logLdap/'.$nomFichier,'a+'); // ouvrir le fichier ou le créer
         fseek($fp,SEEK_END); // poser le point de lecture à la fin du fichier
         $nouverr=date('Y-m-d_H-i-s')." : ".$event."\r\n"; // ajouter un retour à la ligne au fichier
         fputs($fp,$nouverr); // ecrire ce texte
         fclose($fp); //fermer le fichier */
-    }
-
+        }
 
 
-    function seekEntityId($ldap_id, $db){
 
+    function seekEntityId($ldap_id, $db)
+    {
         $qry = $db->prepare("SELECT entity_id, entity_label from entities WHERE ldap_id= ? ");
-        if($qry->execute(array($ldap_id))){
-          while($row = $qry->fetch()){
-              //echo "la valeur de la requete pour seekParentEntityId est : ".$row['entity_id']."\n";
-              $info = $row['entity_id'];
-          }
-      }
-      return $info;
-  }
-
+        if ($qry->execute(array($ldap_id))) {
+            while ($row = $qry->fetch()) {
+                //echo "la valeur de la requete pour seekParentEntityId est : ".$row['entity_id']."\n";
+                $info = $row['entity_id'];
+            }
+        }
+        return $info;
+    }
 
-  function insertUserEntity($pseudo, $entity_id, $db){
 
-    $is_primary='Y';
-    $qry=$db->prepare("SELECT * from users_entities where user_id = ?");
-    $qry->execute(array($pseudo));
-    $result = $qry->fetchAll();
-    if(empty($result)){
-        $is_primary='Y';
-    }else{
-        $is_primary='N';
-    }
+  function insertUserEntity($pseudo, $entity_id, $db)
+  {
+      $is_primary='Y';
+      $qry=$db->prepare("SELECT * from users_entities where user_id = ?");
+      $qry->execute(array($pseudo));
+      $result = $qry->fetchAll();
+      if (empty($result)) {
+          $is_primary='Y';
+      } else {
+          $is_primary='N';
+      }
 
-    $qry=$db->prepare("SELECT * from users_entities where user_id = ? and entity_id = ? ");
-    $result = null;
-    $qry->execute(array($pseudo,$entity_id));
-    $result = $qry->fetchAll();
-    //print_r($qry->errorInfo());
-    if($result != null){
-        echo "les donnees de users_entities sont a jour \n";
-    }else{
-        echo "les donnees de users_entities doivent etre mis a jour!";
-        $qry2=$db->prepare("INSERT into users_entities (user_id,entity_id, primary_entity) values (?,?,?)");
-        $result2 = $qry2->execute(array($pseudo, $entity_id, $is_primary));
-        //print_r($qry2->errorInfo());
-        $result2 = $qry2->fetchAll();
-        if($result2 ==null){
-            echo "Error, aucun users_entities n'a ete ajoute \n";
-        }else{ echo "Insertion du users_entities effectue! \n";}
-    }
-}
+      $qry=$db->prepare("SELECT * from users_entities where user_id = ? and entity_id = ? ");
+      $result = null;
+      $qry->execute(array($pseudo,$entity_id));
+      $result = $qry->fetchAll();
+      //print_r($qry->errorInfo());
+      if ($result != null) {
+          echo "les donnees de users_entities sont a jour \n";
+      } else {
+          echo "les donnees de users_entities doivent etre mis a jour!";
+          $qry2=$db->prepare("INSERT into users_entities (user_id,entity_id, primary_entity) values (?,?,?)");
+          $result2 = $qry2->execute(array($pseudo, $entity_id, $is_primary));
+          //print_r($qry2->errorInfo());
+          $result2 = $qry2->fetchAll();
+          if ($result2 ==null) {
+              echo "Error, aucun users_entities n'a ete ajoute \n";
+          } else {
+              echo "Insertion du users_entities effectue! \n";
+          }
+      }
+  }
 
 /**
 Chargement du fichier xml
@@ -301,14 +298,13 @@ Chargement du fichier xml
 
 $dom = new DomDocument();
 echo "... TRAITEMENT du fichier $fichier ...\n";
-if(!($dom->load('../xml/'.$fichier.'.xml')))
-{
+if (!($dom->load('../xml/'.$fichier.'.xml'))) {
     //echo "fichier : ".$fichier;
     $event = "Unable to load : " . $fichier.'.xml'."\n";
     echo $event;
     //ecrire_log($event,$nomFichier);
     exit();
-}else{
+} else {
     $event = "able to load : " . $fichier.'.xml'."\n";
     echo $event;
     //ecrire_log($event,$nomFichier);
@@ -316,12 +312,13 @@ if(!($dom->load('../xml/'.$fichier.'.xml')))
 
 
 /*On compte le nombre d'item dans le fichier xml. Ceci est réalisé car le nom de la balise est item suivi d'un chiffre*/
-for($m = 0; ;$m++)
-{
+for ($m = 0; ;$m++) {
     $nomItem = 'item_'.$m;
     $list = $dom->getElementsByTagName("ldap_info")->item(0);
     $listItem = $list->getElementsByTagName($nomItem)->item(0);
-    if($listItem == NULL){break;}
+    if ($listItem == null) {
+        break;
+    }
 }
 
 
@@ -332,8 +329,7 @@ Lecture du fichier ldap.xml des users pour mise à jours des données des tables
 
 $idUsersTab= array('superadmin'); //Ce tableau est initialisé avec superadmin pour qu'il ne soit pas passé en DEL lors de la mise à jour des users.
 /*Boucle qui permet de travailler sur les données contenues dans le fichier xml. On récupère les données puis on les insère dans la table users_entities*/
-for($i = 0; $i<$m ; $i++)
-{
+for ($i = 0; $i<$m ; $i++) {
     $nomItem = 'item_'.$i;
 
     $list = $dom->getElementsByTagName("ldap_info")->item(0);
@@ -341,7 +337,7 @@ for($i = 0; $i<$m ; $i++)
 
     $user_id = infoBalise($listItem, 'xml_user_id');
 
-    if($user_id == NULL){
+    if ($user_id == null) {
         $event = "Id du User de l'$nomItem absent, arret du processus";
         //ecrire_log($event,$nomFichier);break;
     }
@@ -366,16 +362,16 @@ for($i = 0; $i<$m ; $i++)
     $user_entities = array();
 
     //La boucle permet de récupérer les données de chaques memberOf.
-    for($j = 0; ; $j++)
-    {
+    for ($j = 0; ; $j++) {
         $nomItem = 'xml_'.$j;
         $dnMemberof = infoBalise($user_entity, $nomItem);
         // on arrête la lecture des memberof si cnMemberof est null
-        if($dnMemberof == ''){break;}
+        if ($dnMemberof == '') {
+            break;
+        }
         //$pos = strpos($cnMemberof, $DnsEntities[$key]);
         if (preg_match('/'.$DnsEntities[0].'/', $dnMemberof)) {
-
-            $entity_ldap_id = $ad->group_info($dnMemberof,array('objectguid'),$DnsEntities[0]);
+            $entity_ldap_id = $ad->group_info($dnMemberof, array('objectguid'), $DnsEntities[0]);
             $entity_ldap_id=$entity_ldap_id['objectguid'];
             $entityId=seekEntityId($entity_ldap_id, $db);
             echo("-------------Entite associee-------------\n");
@@ -384,25 +380,22 @@ for($i = 0; $i<$m ; $i++)
             echo "+ ldap_id :   $entity_ldap_id\n";
             echo "+ entity_id : $entityId\n";
             echo("----------------------------------------\n");
-            if(!empty($user_id) and !empty($entityId)){
-
-                insertUserEntity($user_id,$entityId,$db);
+            if (!empty($user_id) and !empty($entityId)) {
+                insertUserEntity($user_id, $entityId, $db);
             }
             $user_entities[]=$entityId;
         }
-}
+    }
 
-if($dnMemberof != ''){
-    deleteUsersEntities($user_entities,$user_id,$db);
-}
+    if ($dnMemberof != '') {
+        deleteUsersEntities($user_entities, $user_id, $db);
+    }
 
-if($dnMemberof == '' && $j==0){
-    echo "... PAS DE MEMBER OF! ...\n";
-}
-echo("========================================\n\n\n");
+    if ($dnMemberof == '' && $j==0) {
+        echo "... PAS DE MEMBER OF! ...\n";
+    }
+    echo("========================================\n\n\n");
 }
 
 
 //print_r($idUsersTab);
-
-?>
diff --git a/modules/ldap/process_users_to_maarch.php b/modules/ldap/process_users_to_maarch.php
index f6939d5d7f5..80bd80af0f5 100755
--- a/modules/ldap/process_users_to_maarch.php
+++ b/modules/ldap/process_users_to_maarch.php
@@ -7,31 +7,22 @@ $nomFichier = date('Y-m-d_H-i-s') . '.log'; //nom du fichier log enregistrer dan
 $fichier = 'ldap_users';
 
 echo "... CHARGEMENT DU FICHIER DE CONFIGURATION ...\n";
-if( !isset($argv) ){
-
-	exit(htmlentities("Ce script ne peut-etre appelé qu'en PHP CLI"));
-
-}else if( isset($argv) && count($argv) < 2){
-
-	exit("/!\ Erreur de Syntaxe !\nLa syntaxe est $argv[0] <fichier de conf xml> <xml de sortie>\n\n");
-
-}else if(!file_exists($argv[1])){
-
-	exit("/!\ Le fichier de configuration n'existe pas!\n\n");
-}else{
-
-	$ldap_conf_file = trim($argv[1]);
-	echo "Fichier OK !\n\n";
+if (!isset($argv)) {
+    exit(htmlentities("Ce script ne peut-etre appelé qu'en PHP CLI"));
+} elseif (isset($argv) && count($argv) < 2) {
+    exit("/!\ Erreur de Syntaxe !\nLa syntaxe est $argv[0] <fichier de conf xml> <xml de sortie>\n\n");
+} elseif (!file_exists($argv[1])) {
+    exit("/!\ Le fichier de configuration n'existe pas!\n\n");
+} else {
+    $ldap_conf_file = trim($argv[1]);
+    echo "Fichier OK !\n\n";
 }
 //Extraction de /root/config dans le fichier de conf
 $ldap_conf = new DomDocument();
-try
-{
-	$ldap_conf->load($ldap_conf_file);
-}
-catch(Exception $e)
-{ 
-	exit("/!\ Impossible de charger le document : ".$ldap_conf_file."\n
+try {
+    $ldap_conf->load($ldap_conf_file);
+} catch (Exception $e) {
+    exit("/!\ Impossible de charger le document : ".$ldap_conf_file."\n
 		Erreur : ".$e.getMessage."\n\n");
 }
 
@@ -51,123 +42,121 @@ echo "... CONNEXION A LA BASE DE DONNEES MAARCH ...\n";
 
 // Connexion, sélection de la base de données
 try {
-	$db = new PDO("pgsql:host=$host;dbname=$dbname", "$user", "$password");
-	echo 'Connexion OK'."\n\n";
-}
-catch(PDOException $e) {
-	$db = null;
-	echo '/!\ Erreur de connexion: ' . $e->getMessage()."\n\n";
-	exit;
+    $db = new PDO("pgsql:host=$host;dbname=$dbname", "$user", "$password");
+    echo 'Connexion OK'."\n\n";
+} catch (PDOException $e) {
+    $db = null;
+    echo '/!\ Erreur de connexion: ' . $e->getMessage()."\n\n";
+    exit;
 }
 
 
-/* 
+/*
 Fonction qui permet de récupérer l'information de la balise concernée dans le fichier xml
 **/
 function infoBalise($description, $balise)
 {
-	if($description == NULL) {
-		return $contenu = '';}
-		else{
-			$contenu = NULL;
-			$contenubalise = $description ->getElementsByTagName($balise);
-			foreach($contenubalise as $contenu)
-				$contenu = $contenu->firstChild->nodeValue . "";
-			return $contenu ;
-		}
-	}
-
-
-		/*Fonction qui va vérifier si l'utilisateur est dans la table des users ou non*/
-		function verifUser($user_id, $db)
-		{
-			$qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?)");	
-			$qry->execute(array($user_id));
-			//print_r($qry->errorInfo());
-			while ($row = $qry->fetch()){
-				$user_id = $row['user_id'];
-				if($user_id == ''){
-					return false; 
-				}else{
-					return true;
-				}
-			}
-		}
-
-		/*Fonction qui va vérifier les données de l'utilisateur dans la table users. Si il y a des données qui ne sont pas à jour, la fonction fait le update pour mettre à jour. */
-		function verifUpdate($user_id,$firstname,$lastname,$phone,$mail,$db)
-		{
-
-			$qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?) and firstname = ? and lastname = ? and phone = ? and mail = ? and (status = 'OK' or status = 'ABS')");	
-			$qry->execute(array($user_id,$firstname,$lastname,$phone,$mail));
-			$result = $qry->fetchAll();
-			if($result==null){
-				echo "Les donnees doivent etre mis a jour !";
-				$qry = $db->prepare("UPDATE users set  user_id = ?, firstname = ? , lastname = ? , phone = ? , mail = ? where upper(user_id) = upper(?) ");	
-				$result = $qry->execute(array($user_id,$firstname,$lastname,$phone,$mail,$user_id));
-				$result = $qry->fetchAll();
-				if(!$result){
-					echo "/!\ données non mises à jours!";
-				}else{
-					echo "... données mises à jour! ...\n";
-				}
-			}else{
-				echo "... les donnees de $user_id sont a jour ...\n";
-				return true;
-			}
-		}
-
-		/*Function qui va insérer l'utilisateur dans la table des users. Si l'utilisateur n'est pas présent, on lui done le mot de passe de maarch*/
-		function insertUser($user_id,$firstname,$lastname,$phone,$mail,$db)
-		{
-
-			$qry = $db->prepare("INSERT into users (user_id, password, firstname, lastname, phone, mail, enabled, change_password, status,loginmode) values (?,?,?,?,?,?,?,?,?,?)");	
-			$qry->execute(array($user_id,'65d1d802c2c5e7e9035c5cef3cfc0902b6d0b591bfa85977055290736bbfcdd7e19cb7cfc9f980d0c815bbf7fe329a4efd8da880515ba520b22c0aa3a96514cc',$firstname,$lastname,$phone,$mail,'Y','Y','OK','standard'));
-			$result = $qry->fetchAll();
-			if(!$result){
-				echo "/!\ L'utilisateur $user_id n'a pas ete insere !\n";
-				return false;
-			}else{
-				echo "... l'utilisateur $user_id a été ajouté ...\n";
-				return true;
-			}
-		}
-
-		/*Fonction qui change le status d'un user s'il n'est plus dans le ldap*/
-		function changeStatusUsers($idUsersTab,$db)
-		{
-			$query = "select user_id from users where status not in ('DEL') and ";
-			$query .= "user_id not in ('".implode("','",$idUsersTab)."')";	
-			$qry = $db->prepare($query);	
-			$qry->execute(array());
-			$result = $qry->fetchAll();
-			if($result == null){
-				echo "Aucun utilisateur n'a besoin d'être passé en DEL\n";
-				return true;
-			}else{
-				echo "Des utilisateurs doivent changer de status !\n";
-
-				$qry = $db->prepare("UPDATE users set status = 'DEL' where user_id in (select user_id from users where status not in ('DEL') and user_id not in ('".implode("','",$idUsersTab)."')) ");	
-				$qry->execute();
-				$result = $qry->fetchAll();
-				if(!$result){
-					echo "/!\ Aucun utilisateur n'a pu etre passé en DEL !\n";
-				}else{
-					echo "... des utilisateur ont été passé en DEL ...\n";
-				}
-			}
-
-		}
-
-		/*Fontion qui va écrire dans le fichier log . Cela permet de faire un suivie du processus*/
-		function ecrire_log($event,$nomFichier){
+    if ($description == null) {
+        return $contenu = '';
+    } else {
+        $contenu = null;
+        $contenubalise = $description ->getElementsByTagName($balise);
+        foreach ($contenubalise as $contenu) {
+            $contenu = $contenu->firstChild->nodeValue . "";
+        }
+        return $contenu ;
+    }
+}
+
+
+        /*Fonction qui va vérifier si l'utilisateur est dans la table des users ou non*/
+        function verifUser($user_id, $db)
+        {
+            $qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?)");
+            $qry->execute(array($user_id));
+            //print_r($qry->errorInfo());
+            while ($row = $qry->fetch()) {
+                $user_id = $row['user_id'];
+                if ($user_id == '') {
+                    return false;
+                } else {
+                    return true;
+                }
+            }
+        }
+
+        /*Fonction qui va vérifier les données de l'utilisateur dans la table users. Si il y a des données qui ne sont pas à jour, la fonction fait le update pour mettre à jour. */
+        function verifUpdate($user_id, $firstname, $lastname, $phone, $mail, $db)
+        {
+            $qry = $db->prepare("SELECT * from users where upper(user_id) = upper(?) and firstname = ? and lastname = ? and phone = ? and mail = ? and (status = 'OK' or status = 'ABS')");
+            $qry->execute(array($user_id,$firstname,$lastname,$phone,$mail));
+            $result = $qry->fetchAll();
+            if ($result==null) {
+                echo "Les donnees doivent etre mis a jour !";
+                $qry = $db->prepare("UPDATE users set  user_id = ?, firstname = ? , lastname = ? , phone = ? , mail = ? where upper(user_id) = upper(?) ");
+                $result = $qry->execute(array($user_id,$firstname,$lastname,$phone,$mail,$user_id));
+                $result = $qry->fetchAll();
+                if (!$result) {
+                    echo "/!\ données non mises à jours!";
+                } else {
+                    echo "... données mises à jour! ...\n";
+                }
+            } else {
+                echo "... les donnees de $user_id sont a jour ...\n";
+                return true;
+            }
+        }
+
+        /*Function qui va insérer l'utilisateur dans la table des users. Si l'utilisateur n'est pas présent, on lui done le mot de passe de maarch*/
+        function insertUser($user_id, $firstname, $lastname, $phone, $mail, $db)
+        {
+            $qry = $db->prepare("INSERT into users (user_id, password, firstname, lastname, phone, mail, enabled, status,loginmode) values (?,?,?,?,?,?,?,?,?)");
+            $qry->execute(array($user_id,'65d1d802c2c5e7e9035c5cef3cfc0902b6d0b591bfa85977055290736bbfcdd7e19cb7cfc9f980d0c815bbf7fe329a4efd8da880515ba520b22c0aa3a96514cc',$firstname,$lastname,$phone,$mail,'Y','OK','standard'));
+            $result = $qry->fetchAll();
+            if (!$result) {
+                echo "/!\ L'utilisateur $user_id n'a pas ete insere !\n";
+                return false;
+            } else {
+                echo "... l'utilisateur $user_id a été ajouté ...\n";
+                return true;
+            }
+        }
+
+        /*Fonction qui change le status d'un user s'il n'est plus dans le ldap*/
+        function changeStatusUsers($idUsersTab, $db)
+        {
+            $query = "select user_id from users where status not in ('DEL') and ";
+            $query .= "user_id not in ('".implode("','", $idUsersTab)."')";
+            $qry = $db->prepare($query);
+            $qry->execute(array());
+            $result = $qry->fetchAll();
+            if ($result == null) {
+                echo "Aucun utilisateur n'a besoin d'être passé en DEL\n";
+                return true;
+            } else {
+                echo "Des utilisateurs doivent changer de status !\n";
+
+                $qry = $db->prepare("UPDATE users set status = 'DEL' where user_id in (select user_id from users where status not in ('DEL') and user_id not in ('".implode("','", $idUsersTab)."')) ");
+                $qry->execute();
+                $result = $qry->fetchAll();
+                if (!$result) {
+                    echo "/!\ Aucun utilisateur n'a pu etre passé en DEL !\n";
+                } else {
+                    echo "... des utilisateur ont été passé en DEL ...\n";
+                }
+            }
+        }
+
+        /*Fontion qui va écrire dans le fichier log . Cela permet de faire un suivie du processus*/
+        function ecrire_log($event, $nomFichier)
+        {
 
 /*        $fp = fopen('var/www/html/maarch_entreprise_prod/modules/ldap/logLdap/'.$nomFichier,'a+'); // ouvrir le fichier ou le créer
         fseek($fp,SEEK_END); // poser le point de lecture à la fin du fichier
         $nouverr=date('Y-m-d_H-i-s')." : ".$event."\r\n"; // ajouter un retour à la ligne au fichier
         fputs($fp,$nouverr); // ecrire ce texte
         fclose($fp); //fermer le fichier */
-    }
+        }
 
 /**
 Chargement du fichier xml
@@ -175,30 +164,30 @@ Chargement du fichier xml
 
 $dom = new DomDocument();
 echo "... TRAITEMENT du fichier $fichier ...\n";
-if(!($dom->load('../xml/'.$fichier.'.xml')))
-{
-	//echo "fichier : ".$fichier;
-	$event = "/!\ Unable to load : " . $fichier.'.xml'."\n";
-	echo $event;
-	//ecrire_log($event,$nomFichier);
-	exit();
-}else{
-	$event = "Able to load : " . $fichier.'.xml'."\n";
-	echo $event;
-	//ecrire_log($event,$nomFichier);
+if (!($dom->load('../xml/'.$fichier.'.xml'))) {
+    //echo "fichier : ".$fichier;
+    $event = "/!\ Unable to load : " . $fichier.'.xml'."\n";
+    echo $event;
+    //ecrire_log($event,$nomFichier);
+    exit();
+} else {
+    $event = "Able to load : " . $fichier.'.xml'."\n";
+    echo $event;
+    //ecrire_log($event,$nomFichier);
 }
 
 
 /*On compte le nombre d'item dans le fichier xml. Ceci est réalisé car le nom de la balise est item suivi d'un chiffre*/
 
-for($m = 0; ;$m++)
-{
-	//echo 'test';
-	$nomItem = 'item_'.$m;
-	$list = $dom->getElementsByTagName("ldap_info")->item(0);
-	//print_r($list);
-	$listItem = $list->getElementsByTagName($nomItem)->item(0);
-	if($listItem == NULL){break;}
+for ($m = 0; ;$m++) {
+    //echo 'test';
+    $nomItem = 'item_'.$m;
+    $list = $dom->getElementsByTagName("ldap_info")->item(0);
+    //print_r($list);
+    $listItem = $list->getElementsByTagName($nomItem)->item(0);
+    if ($listItem == null) {
+        break;
+    }
 }
 
 
@@ -208,30 +197,29 @@ Lecture du fichier ldap.xml des users pour mise à jours des données des tables
 
 $event = "Lecture du fichier $nomFichier.xml pour mise à jours des données de la table users"."\n";
 echo $event;
-ecrire_log($event,$nomFichier);
+ecrire_log($event, $nomFichier);
 $idUsersTab= array('superadmin'); //Ce tableau est initialisé avec superadmin pour qu'il ne soit pas passé en DEL lors de la mise à jour des users.
 /*Boucle qui permet de travailler sur les données contenues dans le fichier xml. On récupère les données puis on les insère dans la table users_entities*/
 
-for($i = 0; $i<$m ; $i++)
-{
-	$nomItem = 'item_'.$i;
-
-	$list = $dom->getElementsByTagName("ldap_info")->item(0);
-	$listItem = $list->getElementsByTagName($nomItem)->item(0);
-
-	$user_id = infoBalise($listItem, 'xml_user_id');
-	
-	if($user_id == NULL){
-		$event = "Id du User de l'$nomItem absent, arret du processus";
-		//ecrire_log($event,$nomFichier);
-		break;
-	}
-	$firstname = infoBalise($listItem, 'xml_firstname');
-	$lastname = infoBalise($listItem, 'xml_lastname');
-	$phone = infoBalise($listItem, 'xml_phone');
-	$mail = infoBalise($listItem, 'xml_mail');
-	
-	echo("=============== $user_id ===============\n");
+for ($i = 0; $i<$m ; $i++) {
+    $nomItem = 'item_'.$i;
+
+    $list = $dom->getElementsByTagName("ldap_info")->item(0);
+    $listItem = $list->getElementsByTagName($nomItem)->item(0);
+
+    $user_id = infoBalise($listItem, 'xml_user_id');
+    
+    if ($user_id == null) {
+        $event = "Id du User de l'$nomItem absent, arret du processus";
+        //ecrire_log($event,$nomFichier);
+        break;
+    }
+    $firstname = infoBalise($listItem, 'xml_firstname');
+    $lastname = infoBalise($listItem, 'xml_lastname');
+    $phone = infoBalise($listItem, 'xml_phone');
+    $mail = infoBalise($listItem, 'xml_mail');
+    
+    echo("=============== $user_id ===============\n");
     echo("-------------Informations-------------\n");
     echo "+ xml :     $nomItem\n";
     echo "+ user_id : $user_id\n";
@@ -241,32 +229,25 @@ for($i = 0; $i<$m ; $i++)
     echo "+ mail : $mail\n";
     echo("--------------------------------------\n\n");
 
-	$idEntitiesTab = array();
+    $idEntitiesTab = array();
 
-	array_push($idUsersTab, $user_id);
+    array_push($idUsersTab, $user_id);
 
 
 
-	//On vérifie le status des users. S'ils sont inexistants, on les ajoute. S'ils ont des données manquantes, on les met à jour. En revanche on ne supprime pas les utilisateurs. On les passe en DEL
-	$isUser=verifUser($user_id,$db);
-	print_r("\n");
-	if($isUser){
-		echo "... L'utilisateur $user_id existe deja ...\n";
-		verifUpdate($user_id,$firstname,$lastname,$phone,$mail,$db);
-	}else{
-		echo "... L'utilisateur $user_id n'existe pas, il va etre insere dans la base de donnees ...\n";
-		insertUser($user_id,$firstname,$lastname,$phone,$mail,$db);
-	}
-	echo "============================================\n\n";
+    //On vérifie le status des users. S'ils sont inexistants, on les ajoute. S'ils ont des données manquantes, on les met à jour. En revanche on ne supprime pas les utilisateurs. On les passe en DEL
+    $isUser=verifUser($user_id, $db);
+    print_r("\n");
+    if ($isUser) {
+        echo "... L'utilisateur $user_id existe deja ...\n";
+        verifUpdate($user_id, $firstname, $lastname, $phone, $mail, $db);
+    } else {
+        echo "... L'utilisateur $user_id n'existe pas, il va etre insere dans la base de donnees ...\n";
+        insertUser($user_id, $firstname, $lastname, $phone, $mail, $db);
+    }
+    echo "============================================\n\n";
 }
 
 echo "\n... Vérification du status des users ...\n";
 
-changeStatusUsers($idUsersTab,$db); //Fonction qui va permettre de passer en DEL les users qui ne sont pas dans le LDAP.XML
-
-
-
-
-
-
-?>
+changeStatusUsers($idUsersTab, $db); //Fonction qui va permettre de passer en DEL les users qui ne sont pas dans le LDAP.XML
diff --git a/sql/data_fr.sql b/sql/data_fr.sql
index 18e1c07697b..1c17fc53c34 100755
--- a/sql/data_fr.sql
+++ b/sql/data_fr.sql
@@ -354,91 +354,91 @@ DELETE FROM users WHERE user_id <> 'superadmin';
 TRUNCATE TABLE users_entities;
 DELETE FROM users WHERE user_id = 'rrenaud';
 DELETE FROM users_entities WHERE user_id = 'rrenaud';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (1, 'rrenaud', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Robert', 'RENAUD', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (1, 'rrenaud', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Robert', 'RENAUD', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('rrenaud', 'DGS', '', 'Y');
 DELETE FROM users WHERE user_id = 'ccordy';
 DELETE FROM users_entities WHERE user_id = 'ccordy';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (2, 'ccordy', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Chloé', 'CORDY', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (2, 'ccordy', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Chloé', 'CORDY', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ccordy', 'DSI', '', 'Y');
 DELETE FROM users WHERE user_id = 'ssissoko';
 DELETE FROM users_entities WHERE user_id = 'ssissoko';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (3, 'ssissoko', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Sylvain', 'SISSOKO', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (3, 'ssissoko', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Sylvain', 'SISSOKO', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ssissoko', 'DSI', '', 'Y');
 DELETE FROM users WHERE user_id = 'nnataly';
 DELETE FROM users_entities WHERE user_id = 'nnataly';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (4, 'nnataly', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Nancy', 'NATALY', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (4, 'nnataly', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Nancy', 'NATALY', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('nnataly', 'PSO', '', 'Y');
 DELETE FROM users WHERE user_id = 'ddur';
 DELETE FROM users_entities WHERE user_id = 'ddur';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (5, 'ddur', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Dominique', 'DUR', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (5, 'ddur', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Dominique', 'DUR', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ddur', 'ELUS', '', 'Y');
 DELETE FROM users WHERE user_id = 'jjane';
 DELETE FROM users_entities WHERE user_id = 'jjane';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (6, 'jjane', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Jenny', 'JANE', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (6, 'jjane', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Jenny', 'JANE', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('jjane', 'CCAS', '', 'Y');
 DELETE FROM users WHERE user_id = 'eerina';
 DELETE FROM users_entities WHERE user_id = 'eerina';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (7, 'eerina', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Edith', 'ERINA', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (7, 'eerina', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Edith', 'ERINA', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('eerina', 'CAB', '', 'Y');
 DELETE FROM users WHERE user_id = 'kkaar';
 DELETE FROM users_entities WHERE user_id = 'kkaar';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (8, 'kkaar', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Katy', 'KAAR', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (8, 'kkaar', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Katy', 'KAAR', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('kkaar', 'DGA', '', 'Y');
 DELETE FROM users WHERE user_id = 'bboule';
 DELETE FROM users_entities WHERE user_id = 'bboule';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (9, 'bboule', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Bruno', 'BOULE', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (9, 'bboule', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Bruno', 'BOULE', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('bboule', 'PCU', '', 'Y');
 DELETE FROM users WHERE user_id = 'ppetit';
 DELETE FROM users_entities WHERE user_id = 'ppetit';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (10, 'ppetit', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Patricia', 'PETIT', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (10, 'ppetit', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Patricia', 'PETIT', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ppetit', 'VILLE', '', 'Y');
 DELETE FROM users WHERE user_id = 'aackermann';
 DELETE FROM users_entities WHERE user_id = 'aackermann';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (11, 'aackermann', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Amanda', 'ACKERMANN', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (11, 'aackermann', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Amanda', 'ACKERMANN', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('aackermann', 'PSF', '', 'Y');
 DELETE FROM users WHERE user_id = 'ppruvost';
 DELETE FROM users_entities WHERE user_id = 'ppruvost';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (12, 'ppruvost', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Pierre', 'PRUVOST', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (12, 'ppruvost', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Pierre', 'PRUVOST', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ppruvost', 'DRH', '', 'Y');
 DELETE FROM users WHERE user_id = 'ttong';
 DELETE FROM users_entities WHERE user_id = 'ttong';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (13, 'ttong', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Tony', 'TONG', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (13, 'ttong', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Tony', 'TONG', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ttong', 'SP', '', 'Y');
 DELETE FROM users WHERE user_id = 'sstar';
 DELETE FROM users_entities WHERE user_id = 'sstar';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (14, 'sstar', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Suzanne', 'STAR', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (14, 'sstar', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Suzanne', 'STAR', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('sstar', 'FIN', '', 'Y');
 DELETE FROM users WHERE user_id = 'ssaporta';
 DELETE FROM users_entities WHERE user_id = 'ssaporta';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (15, 'ssaporta', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Sabrina', 'SAPORTA', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (15, 'ssaporta', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Sabrina', 'SAPORTA', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ssaporta', 'PE', '', 'Y');
 DELETE FROM users WHERE user_id = 'ccharles';
 DELETE FROM users_entities WHERE user_id = 'ccharles';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (16, 'ccharles', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Charlotte', 'CHARLES', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (16, 'ccharles', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Charlotte', 'CHARLES', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ccharles', 'PTE', '', 'Y');
 DELETE FROM users WHERE user_id = 'mmanfred';
 DELETE FROM users_entities WHERE user_id = 'mmanfred';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (17, 'mmanfred', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Martin', 'MANFRED', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (17, 'mmanfred', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Martin', 'MANFRED', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('mmanfred', 'DGA', '', 'Y');
 DELETE FROM users WHERE user_id = 'ddaull';
 DELETE FROM users_entities WHERE user_id = 'ddaull';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (18, 'ddaull', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Denis', 'DAULL', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (18, 'ddaull', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Denis', 'DAULL', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ddaull', 'DSG', '', 'Y');
 DELETE FROM users WHERE user_id = 'bbain';
 DELETE FROM users_entities WHERE user_id = 'bbain';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (19, 'bbain', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Barbara', 'BAIN', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (19, 'bbain', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Barbara', 'BAIN', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('bbain', 'PJS', '', 'Y');
 DELETE FROM users WHERE user_id = 'jjonasz';
 DELETE FROM users_entities WHERE user_id = 'jjonasz';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (20, 'jjonasz', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Jean', 'JONASZ', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (20, 'jjonasz', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Jean', 'JONASZ', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('jjonasz', 'PJU', '', 'Y');
 DELETE FROM users WHERE user_id = 'bblier';
 DELETE FROM users_entities WHERE user_id = 'bblier';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (21, 'bblier', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Bernard', 'BLIER', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (21, 'bblier', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Bernard', 'BLIER', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('bblier', 'COU', '', 'Y');
 DELETE FROM users WHERE user_id = 'ggrand';
 DELETE FROM users_entities WHERE user_id = 'ggrand';
-INSERT INTO users (id, user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES (22, 'ggrand', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Georges', 'GRAND', 'support@maarch.fr', 'N', 'OK', 'standard');
+INSERT INTO users (id, user_id, password, firstname, lastname, mail, status, loginmode) VALUES (22, 'ggrand', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Georges', 'GRAND', 'support@maarch.fr', 'OK', 'standard');
 INSERT INTO users_entities (user_id, entity_id, user_role, primary_entity) VALUES ('ggrand', 'COR', '', 'Y');
 select setval('users_id_seq', (select max(id)+1 from users), false);
 
@@ -832,10 +832,10 @@ VALUES ('ACKNOWLEDGEMENT_RECEIPTS', 'ACKNOWLEDGEMENT_RECEIPTS', 'Dépôt des AR'
 --SUPERADMIN USER
 ------------
 DELETE FROM users WHERE user_id='superadmin';
-INSERT INTO users (user_id, password, firstname, lastname, phone, mail, custom_t2, custom_t3, change_password, status, loginmode) VALUES ('superadmin', '$2y$10$Vq244c5s2zmldjblmMXEN./Q2qZrqtGVgrbz/l1WfsUJbLco4E.e.', 'Super', 'ADMIN', '0147245159', 'support@maarch.fr', NULL, NULL, 'N', 'OK', 'standard');
+INSERT INTO users (user_id, password, firstname, lastname, phone, mail, custom_t2, custom_t3, status, loginmode) VALUES ('superadmin', '$2y$10$Vq244c5s2zmldjblmMXEN./Q2qZrqtGVgrbz/l1WfsUJbLco4E.e.', 'Super', 'ADMIN', '0147245159', 'support@maarch.fr', NULL, NULL, 'OK', 'standard');
 --MAARCH2GEC USER
 DELETE FROM users WHERE user_id = 'cchaplin';
-INSERT INTO users (user_id, password, firstname, lastname, mail, change_password, status, loginmode) VALUES ('cchaplin', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Charlie', 'CHAPLIN', 'support@maarch.fr', 'N', 'OK', 'restMode');
+INSERT INTO users (user_id, password, firstname, lastname, mail, status, loginmode) VALUES ('cchaplin', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Charlie', 'CHAPLIN', 'support@maarch.fr', 'OK', 'restMode');
 DELETE FROM usergroup_content WHERE user_id = 24;
 INSERT INTO usergroup_content (user_id, group_id, role) VALUES (24, 11, '');
 INSERT INTO usergroup_content (user_id, group_id, role) VALUES (24, 13, '');
diff --git a/sql/m2m_contacts_samples.sql b/sql/m2m_contacts_samples.sql
index c3b10ca44c9..868449e497e 100644
--- a/sql/m2m_contacts_samples.sql
+++ b/sql/m2m_contacts_samples.sql
@@ -7,7 +7,7 @@ DELETE FROM security WHERE group_id = 'MAARCHTOGEC';
 INSERT INTO security (group_id, coll_id, where_clause, maarch_comment) VALUES ('MAARCHTOGEC', 'letterbox_coll', '1=0', 'Aucun courrier');
 
 DELETE FROM users WHERE user_id = 'cchaplin';
-INSERT INTO users (user_id, password, firstname, lastname, mail, enabled, change_password, status, loginmode) VALUES ('cchaplin', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Jean', 'WEBSERVICE', 'info@maarch.org', 'Y', 'N', 'OK', 'restMode');
+INSERT INTO users (user_id, password, firstname, lastname, mail, enabled, status, loginmode) VALUES ('cchaplin', '$2y$10$C.QSslBKD3yNMfRPuZfcaubFwPKiCkqqOUyAdOr5FSGKPaePwuEjG', 'Jean', 'WEBSERVICE', 'info@maarch.org', 'Y', 'OK', 'restMode');
 DELETE FROM usergroup_content WHERE user_id = 'cchaplin';
 INSERT INTO usergroup_content (user_id, group_id, role) VALUES ('cchaplin', 'MAARCHTOGEC', '');
 
diff --git a/sql/structure.sql b/sql/structure.sql
index 53fd26d02b0..0ff99bf1f3c 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -219,7 +219,6 @@ CREATE TABLE users
   custom_t2 character varying(50) DEFAULT NULL::character varying,
   custom_t3 character varying(50) DEFAULT NULL::character varying,
   status character varying(10) NOT NULL DEFAULT 'OK'::character varying,
-  change_password character(1) NOT NULL DEFAULT 'Y'::bpchar,
   password_modification_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
   loginmode character varying(50) DEFAULT NULL::character varying,
   cookie_key character varying(255) DEFAULT NULL::character varying,
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index 304a7032c29..6bb023af58c 100755
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -175,10 +175,6 @@ class UserController
             $data['loginmode'] = 'standard';
         }
 
-        if ($data['loginmode'] == 'restMode') {
-            $data['changePassword']= 'N';
-        }
-
         if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_personal_data', 'userId' => $GLOBALS['id']])) {
             $data['phone'] = null;
         }
@@ -261,10 +257,6 @@ class UserController
             $set['status'] = 'OK';
         }
 
-        if ($set['loginmode'] == 'restMode') {
-            $set['change_password']= 'N';
-        }
-
         $userQuota = ParameterModel::getById(['id' => 'user_quota', 'select' => ['param_value_int']]);
         $user = [];
         if (!empty($userQuota['param_value_int'])) {
diff --git a/src/app/user/models/UserModelAbstract.php b/src/app/user/models/UserModelAbstract.php
index f6394028978..235ec7f0777 100755
--- a/src/app/user/models/UserModelAbstract.php
+++ b/src/app/user/models/UserModelAbstract.php
@@ -81,7 +81,7 @@ abstract class UserModelAbstract
     {
         ValidatorModel::notEmpty($aArgs, ['user']);
         ValidatorModel::notEmpty($aArgs['user'], ['userId', 'firstname', 'lastname']);
-        ValidatorModel::stringType($aArgs['user'], ['userId', 'firstname', 'lastname', 'mail', 'initials', 'phone', 'changePassword', 'loginmode']);
+        ValidatorModel::stringType($aArgs['user'], ['userId', 'firstname', 'lastname', 'mail', 'initials', 'phone', 'loginmode']);
 
         $length = rand(50, 70);
         $chars = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcefghijklmnopqrstuvwxyz!@$%^*_=+,.?';
@@ -101,7 +101,6 @@ abstract class UserModelAbstract
                 'phone'                         => $aArgs['user']['phone'],
                 'initials'                      => $aArgs['user']['initials'],
                 'status'                        => 'OK',
-                'change_password'               => empty($aArgs['user']['changePassword']) ? 'Y' : $aArgs['user']['changePassword'],
                 'loginmode'                     => empty($aArgs['user']['loginmode']) ? 'standard' : $aArgs['user']['loginmode'],
                 'password'                      => AuthenticationModel::getPasswordHash($password),
                 'password_modification_date'    => 'CURRENT_TIMESTAMP'
@@ -238,8 +237,7 @@ abstract class UserModelAbstract
             'table'     => 'users',
             'set'       => [
                 'password'                      => AuthenticationModel::getPasswordHash($aArgs['password']),
-                'password_modification_date'    => 'CURRENT_TIMESTAMP',
-                'change_password'               => 'N',
+                'password_modification_date'    => 'CURRENT_TIMESTAMP'
             ],
             'where'     => ['id = ?'],
             'data'      => [$aArgs['id']]
@@ -257,7 +255,6 @@ abstract class UserModelAbstract
             'table'     => 'users',
             'set'       => [
                 'password'                      => AuthenticationModel::getPasswordHash($aArgs['password']),
-                'change_password'               => 'N',
                 'password_modification_date'    => 'CURRENT_TIMESTAMP',
                 'reset_token'                   => null
             ],
diff --git a/src/core/controllers/AuthenticationController.php b/src/core/controllers/AuthenticationController.php
index 80d4c9ddf20..91f4a2acb2a 100755
--- a/src/core/controllers/AuthenticationController.php
+++ b/src/core/controllers/AuthenticationController.php
@@ -63,7 +63,7 @@ class AuthenticationController
         ValidatorModel::stringType($aArgs, ['login', 'currentRoute']);
 
         if ($aArgs['currentRoute'] != '/initialize') {
-            $user = UserModel::getByLogin(['select' => ['status', 'change_password'], 'login' => $aArgs['login']]);
+            $user = UserModel::getByLogin(['select' => ['status'], 'login' => $aArgs['login']]);
 
             if ($user['status'] == 'ABS' && !in_array($aArgs['currentRoute'], ['/users/{id}/status', '/currentUser/profile', '/header', '/passwordRules', '/users/{id}/password'])) {
                 return ['isRouteAvailable' => false, 'errors' => 'User is ABS and must be activated'];
@@ -75,9 +75,7 @@ class AuthenticationController
                 if (!in_array($loggingMethod['id'], ['sso', 'cas', 'ldap', 'ozwillo', 'shibboleth'])) {
 
                     $passwordRules = PasswordModel::getEnabledRules();
-                    if ($user['change_password'] == 'Y') {
-                        return ['isRouteAvailable' => false, 'errors' => 'User must change his password'];
-                    } elseif (!empty($passwordRules['renewal'])) {
+                    if (!empty($passwordRules['renewal'])) {
                         $currentDate = new \DateTime();
                         $lastModificationDate = new \DateTime($user['password_modification_date']);
                         $lastModificationDate->add(new \DateInterval("P{$passwordRules['renewal']}D"));
diff --git a/test/unitTests/app/attachment/AttachmentControllerTest.php b/test/unitTests/app/attachment/AttachmentControllerTest.php
index 3ff608d12b7..266791c5af4 100644
--- a/test/unitTests/app/attachment/AttachmentControllerTest.php
+++ b/test/unitTests/app/attachment/AttachmentControllerTest.php
@@ -40,13 +40,18 @@ class AttachmentControllerTest extends TestCase
         self::$id = $responseBody->id;
         $this->assertInternalType('int', self::$id);
 
-        $response     = $attachmentController->create($fullRequest, new \Slim\Http\Response());
+        // CHECK ERROR EMPTY TYPE
+        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
+        $request     = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgsFail   = $aArgs;
+        unset($aArgsFail['type']);
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgsFail, $request);
+        $response = $attachmentController->create($fullRequest, new \Slim\Http\Response());
         $this->assertSame(400, $response->getStatusCode());
         $response = (array)json_decode((string)$response->getBody());
 
         $this->assertSame('Body type is empty or not a string', $response['errors']);
 
-
         //  READ
         $res = \Attachment\models\AttachmentModel::getById(['id' => self::$id, 'select' => ['*']]);
 
@@ -76,8 +81,8 @@ class AttachmentControllerTest extends TestCase
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
 
         $aArgs = [
-            'title'         => 'La plus chétive cabane renferme plus de vertus que les palais des rois.',
-            'type'          => 'response_project',
+            'title' => 'La plus chétive cabane renferme plus de vertus que les palais des rois.',
+            'type'  => 'response_project',
         ];
 
         $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
@@ -85,8 +90,12 @@ class AttachmentControllerTest extends TestCase
         $response     = $attachmentController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
         $this->assertSame(204, $response->getStatusCode());
 
-        unset($aArgs['type']);
-        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+        // CHECK ERROR EMPTY TYPE
+        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request     = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgsFail   = $aArgs;
+        unset($aArgsFail['type']);
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgsFail, $request);
 
         $response     = $attachmentController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
         $this->assertSame(400, $response->getStatusCode());
diff --git a/test/unitTests/app/user/UserControllerTest.php b/test/unitTests/app/user/UserControllerTest.php
index 7e2e71167c0..dffcabbb236 100755
--- a/test/unitTests/app/user/UserControllerTest.php
+++ b/test/unitTests/app/user/UserControllerTest.php
@@ -693,15 +693,6 @@ class UserControllerTest extends TestCase
         $checkPassword = \SrcCore\models\AuthenticationModel::authentication(['userId' => $GLOBALS['userId'], 'password' => 'superadmin']);
 
         $this->assertSame(true, $checkPassword);
-
-        \SrcCore\models\DatabaseModel::update([
-            'table'     => 'users',
-            'set'       => [
-                'change_password'   => 'N'
-            ],
-            'where'     => ['user_id = ?'],
-            'data'      => [$GLOBALS['userId']]
-        ]);
     }
 
     public function testUpdateProfile()
-- 
GitLab