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