liste_utilisateurs.inc.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. <?php
  2. // --------
  3. // Sécurité
  4. // --------
  5. if (isValidConstant() != 1) {
  6. fermeSessionUtilisateur();
  7. }
  8. // ----------------------
  9. // Droit de l'utilisateur
  10. // ----------------------
  11. if ($_SESSION['gestion_site'] < 'Oui') {
  12. exit;
  13. }
  14. // ------------------------------
  15. // Caractéristiques du module
  16. // ------------------------------
  17. unset($module);
  18. $module = array(
  19. "titre" => "Gestion des utilisateurs",
  20. "urldest" => $SCRIPT_NAME . "?page=liste_utilisateurs",
  21. "recherche" => array("engin" => false),
  22. "jeton" => $jeton,
  23. "opradmin" => "Ajouter un utilisateur",
  24. "fenetre" => array(
  25. "nom" => "liste_utilisateurs",
  26. "titre" => "titre",
  27. "largeur" => "755",
  28. "hauteur" => "406",
  29. "champs" => array("lemploye", "lutilisateur", "lnompersonne", "lemail", "lnoemployeur", "lcellulaire", "lfournisseur"),
  30. "validation" => true
  31. ),
  32. "msgajoutbouton" => "Ajout de la fiche de l'utilisateur",
  33. "actionajoutbouton" => "Ajouter la fiche de l'utilisateur",
  34. "msgmodifbouton" => "Modification de la fiche de l'utilisateur",
  35. "actionmodifbouton" => "Modifier la fiche de l'utilisateur",
  36. "nombre_a_afficher" => array(
  37. 0 => array("refid" => 15, "valeur" => 15),
  38. 1 => array("refid" => 30, "valeur" => 30),
  39. 2 => array("refid" => 45, "valeur" => 45),
  40. 3 => array("refid" => 60, "valeur" => 60),
  41. 4 => array("refid" => 120, "valeur" => 120)
  42. ),
  43. "lientri" => true,
  44. "entete" => array(
  45. 1 => array("Utilisateur" => "utilisateur", "largeur" => "140px"),
  46. 2 => array("Nom de la personne" => "nomreel", "largeur" => "250px"),
  47. 3 => array("Employeur" => "employeur", "largeur" => "140px"),
  48. 4 => array("Courriel" => "email", "largeur" => "510px"),
  49. 5 => array("Niveau" => "CONCAT(gestionsite,gestionutilisateur)", "largeur" => "105px"),
  50. 6 => array("Action" => "enligne", "largeur" => "120px")
  51. ),
  52. "msg" => array(
  53. "maj_ok" => "Mise à jour de la fiche de l'utilisateur effectuée avec succès.",
  54. "maj_echec" => "L'opération de mise à jour de la fiche de l'utilisateur a échouée",
  55. "rech_echec" => "La recherche a été infructueuse ou a échouée.",
  56. "employeur_invalide" => "Employeur introuvable ou inconnu.",
  57. "maj_utl_suppr" => "Fiche de l'utilisateur supprimée.",
  58. "maj_utl_bloque" => "Accès à l'application pour cet utilisateur est bloqué.",
  59. "maj_utl_autorise" => "Accès à l'application pour cet utilisateur est autorisé.",
  60. "maj_utl_mdp" => "Mot de passe modifié avec succès.",
  61. "reset_2fa_succes" => "Retrait du facteur à double authentification effectué avec succès.",
  62. "reset_2fa_echec" => "Retrait du facteur à double authentification a échoué."
  63. )
  64. );
  65. // ------------------
  66. // Requête sur le tri
  67. // ------------------
  68. $rtri = antiInjection($module["entete"][$tri][key($module["entete"][$tri])] . " " . $dir);
  69. function creerNouveauMotDePasse() {
  70. $chaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*-=_+[]\{}|;:,.~";
  71. $nouveauMotDePasse = "";
  72. for ($x = 0; $x < 9; $x++) {
  73. $nouveauMotDePasse .= substr($chaine, rand(0, 95), 1);
  74. }
  75. return $nouveauMotDePasse;
  76. }
  77. function envoieCourrielConfirmation($adresse, $utilisateur, $nouveauMotDePasse) {
  78. $messageTexte = "<html>
  79. <head>
  80. <title>Changement de mot de passe</title>
  81. </head>
  82. <body>
  83. Ceci est un mesage de l'application de lib&eacute;rations syndicales.
  84. <p>
  85. Nous avons bien re&#231;u votre demande de changement de mot de passe pour <u><i>Lib&eacute;rations</i></u>
  86. <p>
  87. Votre nouveau mot de passe temporaire est : $nouveauMotDePasse.<br>\n
  88. Vous devrez le modifier &agrave; la prochaine connexion.<br>\n
  89. <p>
  90. Merci.
  91. <p>
  92. Lib&eacute;rations<br/>
  93. Syst&egrave;me automatis&eacute;<br/>
  94. Ne pas r&eacute;pondre &agrave; ce courriel - Aucune r&eacute;ponse ne sera &eacute;mise.
  95. </body>
  96. </html>";
  97. return envoieCourriel($adresse, $utilisateur,
  98. "Confirmation de votre demande de changement de mot de passe", $messageTexte);
  99. }
  100. function envoieCourrielConfirmation2FA($adresse, $utilisateur) {
  101. $messageTexte = "<html>
  102. <head>
  103. <title>Changement du facteur &agrave; double authentification</title>
  104. </head>
  105. <body>
  106. Ceci est un mesage de l'application de lib&eacute;rations syndicales.
  107. <p>
  108. Nous avons bien re&#231;u votre demande de changement du facteur &agrave; double authentification pour
  109. <u><i>Lib&eacute;rations</i></u>
  110. <p>
  111. Vous pouvez effectuer &agrave; nouveau cette op&eacute;ration &agrave; la prochaine connexion.<br>\n
  112. <p>
  113. Merci.
  114. <p>
  115. Lib&eacute;rations<br/>
  116. Syst&egrave;me automatis&eacute;<br/>
  117. Ne pas r&eacute;pondre &agrave; ce courriel - Aucune r&eacute;ponse ne sera &eacute;mise.
  118. </body>
  119. </html>";
  120. return envoieCourriel($adresse, $utilisateur,
  121. "Confirmation de votre demande de changement du facteur a double authentification", $messageTexte);
  122. }
  123. // -----------------------
  124. // Opération de sauvegarde
  125. // -----------------------
  126. if (isset($action)) {
  127. $msg = "";
  128. $action = stripslashes(antiInjection($action));
  129. switch ($action) {
  130. case "Ajouter la fiche de l'utilisateur":
  131. case "Modifier la fiche de l'utilisateur":
  132. //Vérifier les valeurs avant d'effectuer le traitement
  133. $lnoutilisateur = antiInjection($lnoutilisateur);
  134. $lnompersonne = antiInjection($lnompersonne);
  135. $lemail = antiInjection($lemail);
  136. $lutilisateur = antiInjection($lutilisateur);
  137. $lcellulaire = antiInjection($lcellulaire);
  138. $lnoemployeur = antiInjection(filter_input(INPUT_POST, 'lnoemployeur'));
  139. $lfournisseur = antiInjection(filter_input(INPUT_POST, 'lfournisseur'));
  140. $error = false;
  141. if (empty($lnoutilisateur)) {
  142. $module["resultatSQL"] = false;
  143. $module["message"] = "Le code utilisateur est requis.";
  144. $error = true;
  145. } elseif (empty($lnompersonne)) {
  146. $module["resultatSQL"] = false;
  147. $module["message"] = "Le nom de l'utilisateur est requis";
  148. $error = true;
  149. } elseif (!filter_var($lemail, FILTER_VALIDATE_EMAIL)) {
  150. $module["resultatSQL"] = false;
  151. $module["message"] = "L'adresse courriel est requise et doit être valide.";
  152. $error = true;
  153. } elseif ($lnoemployeur === "" && $lnoemployeur !== 0) {
  154. $module["resultatSQL"] = false;
  155. $module["message"] = "L'employeur de l'utilisateur est requis.";
  156. $error = true;
  157. } elseif (!isValidPhone($lcellulaire)) {
  158. $module["resultatSQL"] = false;
  159. $module["message"] = "Le numéro de cellulaire est requis et doit être valide.";
  160. $error = true;
  161. } elseif ($lfournisseur == "") {
  162. $module["resultatSQL"] = false;
  163. $module["message"] = "Le fournisseur du service cellulaire est requis.";
  164. $error = true;
  165. }
  166. // Ok, tout est beau, sauvegarde
  167. if (!$error) {
  168. unset($sqlparam, $result);
  169. $lnoemployeur = antiInjection($lnoemployeur);
  170. $sqlparam["table"][] = "employeurs";
  171. $sqlparam["where"][] = "refemployeur='$lnoemployeur'";
  172. $result = executerRequeteSql($sqlparam);
  173. if (!isset($result)) {
  174. $module["resultatSQL"] = false;
  175. $module["message"] = $module["msg"]["employeur_invalide"];
  176. } else {
  177. unset($sqlparam, $result);
  178. if ($action == "Modifier la fiche de l'utilisateur") {
  179. $sqlparam["type"] = "UPDATE";
  180. $sqlparam["where"][] = "refutilisateur = '" . $lnoutilisateur . "'";
  181. } else {
  182. $sqlparam["type"] = "INSERT";
  183. $lmotdepasse = creerNouveauMotDePasse();
  184. }
  185. // Login d'utilisateur selon le syndicat
  186. $login = "siiieq";
  187. $sqlparam["connexion"] = "maitre";
  188. $sqlparam["table"][] = "administration";
  189. $sqlparam["champs"]["utilisateur"] = "'$lutilisateur'";
  190. $sqlparam["champs"]["nomreel"] = "'$lnompersonne'";
  191. if ($action == "Ajouter la fiche de l'utilisateur") {
  192. $sqlparam["champs"]["temporaire"] = 1;
  193. //$sqlparam["champs"]["hashloginmps"] = password_hash($lmotdepasse, PASSWORD_DEFAULT);
  194. }
  195. $sqlparam["champs"]["email"] = "'$lemail'";
  196. $sqlparam["champs"]["syndicat"] = "'" . $_SESSION["syndicat"] . "'";
  197. $sqlparam["champs"]["employeur"] = sprintf("'%d'", $lnoemployeur);
  198. $sqlparam["champs"]["cellulaire"] = "'$lcellulaire'";
  199. $sqlparam["champs"]["fournisseur"] = "'$lfournisseur'";
  200. $sqlparam["champs"]["enligne"] = 1;
  201. $result = executerRequeteSql($sqlparam);
  202. if ($action == "Ajouter la fiche de l'utilisateur") {
  203. $resultEmail = envoieCourrielConfirmation($lemail, $lnompersonne, $lmotdepasse);
  204. }
  205. if (isset($result) && $action == "Ajouter la fiche de l'utilisateur" && $resultEmail === "Message envoyé") {
  206. $module["resultatSQL"] = true;
  207. $module["message"] = $module["msg"]["maj_ok"];
  208. } elseif (isset($result) && $action == "Modifier la fiche de l'utilisateur") {
  209. $module["resultatSQL"] = true;
  210. $module["message"] = $module["msg"]["maj_ok"];
  211. } else {
  212. $module["resultatSQL"] = false;
  213. $module["message"] = $module["msg"]["maj_echec"];
  214. if (!empty($resultEmail)) {
  215. $module["message"] .= $resultEmail;
  216. }
  217. }
  218. }
  219. }
  220. break;
  221. case "Bloquer":
  222. case "Autoriser":
  223. $lnoutilisateur = antiInjection($lnoutilisateur);
  224. $sqlparam["type"] = "UPDATE";
  225. $sqlparam["connexion"] = "maitre";
  226. $sqlparam["table"][] = "administration";
  227. $sqlparam["where"][] = "refutilisateur = '$lnoutilisateur'";
  228. $val = ($action == "Bloquer") ? 1 : 0;
  229. // Ne pas réactiver le flag «enligne» après un blocage.
  230. // L'utilisateur doit se brancher à nouveau si son compte est débloqué.
  231. if ($action == "Bloquer") {
  232. $sqlparam["champs"]["enligne"] = 0;
  233. }
  234. $sqlparam["champs"]["acces"] = sprintf("%d", $val);
  235. $result = executerRequeteSql($sqlparam);
  236. if (isset($result)) {
  237. $module["resultatSQL"] = true;
  238. $module["message"] = ($action == "Bloquer") ? $module["msg"]["maj_utl_bloque"] : $module["msg"]["maj_utl_autorise"];
  239. } else {
  240. $module["resultatSQL"] = false;
  241. $module["message"] = $module["msg"]["maj_echec"];
  242. }
  243. break;
  244. case "Supprimer":
  245. $lnoutilisateur = antiInjection($lnoutilisateur);
  246. $sqlparam["type"] = "UPDATE";
  247. $sqlparam["connexion"] = "maitre";
  248. $sqlparam["table"][] = "administration";
  249. $sqlparam["where"][] = "refutilisateur = '$lnoutilisateur'";
  250. unset($val);
  251. $val = 2;
  252. $sqlparam["champs"]["acces"] = sprintf("'%d'", $val);
  253. $result = executerRequeteSql($sqlparam);
  254. if (isset($result)) {
  255. $module["resultatSQL"] = true;
  256. $module["message"] = $module["msg"]["maj_utl_suppr"];
  257. } else {
  258. $module["resultatSQL"] = false;
  259. $module["message"] = $module["msg"]["maj_echec"];
  260. }
  261. break;
  262. case "Créer un nouveau mot de passe":
  263. $n_mp = creerNouveauMotDePasse();
  264. $sqlparam["type"] = "UPDATE";
  265. $sqlparam["connexion"] = "maitre";
  266. $sqlparam["table"][] = "administration";
  267. $sqlparam["where"][] = sprintf("refutilisateur = '%d'", $lnoutilisateur);
  268. $sqlparam["champs"]["hashloginmps"] = "'" . password_hash($n_mp, PASSWORD_DEFAULT) . "'";
  269. $sqlparam["champs"]["temporaire"] = 1;
  270. $result = executerRequeteSql($sqlparam);
  271. unset($sqlparam, $result2);
  272. $sqlparam["type"] = "INSERT";
  273. $sqlparam["connexion"] = "maitre";
  274. $sqlparam["table"][] = "historique_mdp";
  275. $sqlparam["champs"]["noutilisateur"] = sprintf("'%d'", $lnoutilisateur);
  276. $sqlparam["champs"]["hashloginmps"] = "'" . password_hash($n_mp, PASSWORD_DEFAULT) . "'";
  277. $result2 = executerRequeteSql($sqlparam);
  278. unset($sqlparam, $result3);
  279. $sqlparam["connexion"] = "maitre";
  280. $sqlparam["table"][] = "administration";
  281. $sqlparam["champs"][] = "refutilisateur";
  282. $sqlparam["champs"][] = "nomreel";
  283. $sqlparam["champs"][] = "email";
  284. $sqlparam["where"][] = "refutilisateur = '" . $lnoutilisateur . "'";
  285. $result3 = executerRequeteSql($sqlparam);
  286. $adresse = $result3[0]["email"];
  287. $utilisateur = $result3[0]["nomreel"];
  288. $resultEmail = envoieCourrielConfirmation($adresse, $utilisateur, $n_mp);
  289. if (isset($result) && $resultEmail === "Message envoyé") {
  290. $module["resultatSQL"] = true;
  291. $module["message"] = $module["msg"]["maj_utl_mdp"];
  292. } else {
  293. $module["resultatSQL"] = false;
  294. $module["message"] = $module["msg"]["maj_echec"];
  295. }
  296. break;
  297. case "Retirer le facteur à double authentification":
  298. unset($sqlparam, $result);
  299. $sqlparam["type"] = "UPDATE";
  300. $sqlparam["connexion"] = "maitre";
  301. $sqlparam["table"][] = "administration";
  302. $sqlparam["where"][] = sprintf("refutilisateur = '%d'", $lnoutilisateur);
  303. $sqlparam["champs"]["secret2fa"] = "null";
  304. $result = executerRequeteSql($sqlparam);
  305. unset($sqlparam, $result2);
  306. $sqlparam["connexion"] = "maitre";
  307. $sqlparam["table"][] = "administration";
  308. $sqlparam["champs"][] = "refutilisateur";
  309. $sqlparam["champs"][] = "nomreel";
  310. $sqlparam["champs"][] = "email";
  311. $sqlparam["where"][] = "refutilisateur = '" . $lnoutilisateur . "'";
  312. $result2 = executerRequeteSql($sqlparam);
  313. $adresse = $result2[0]["email"];
  314. $utilisateur = $result2[0]["nomreel"];
  315. $resultEmail = envoieCourrielConfirmation2FA($adresse, $utilisateur);
  316. if (isset($result) && $resultEmail === "Message envoyé") {
  317. $module["resultatSQL"] = true;
  318. $module["message"] = $module["msg"]["reset_2fa_succes"];
  319. } else {
  320. $module["resultatSQL"] = false;
  321. $module["message"] = $module["msg"]["reset_2fa_echec"];
  322. }
  323. break;
  324. case "Recherche":
  325. unset($sqlparam, $result);
  326. $zonerecherche = antiInjection($zonerecherche);
  327. $tab_rech = explode(",", $zonerecherche);
  328. $zonerecherche2 = trim($tab_rech[1]) . " " . trim($tab_rech[0]);
  329. $sqlparam["connexion"] = "maitre";
  330. $sqlparam["table"][] = "administration";
  331. $sqlparam["champs"][] = "refutilisateur";
  332. $sqlparam["champs"][] = "utilisateur";
  333. $sqlparam["champs"][] = "nomreel";
  334. $sqlparam["champs"][] = "email";
  335. $sqlparam["champs"][] = "employeur";
  336. $sqlparam["where"][] = "CONCAT(utilisateur, nomreel, email) LIKE '%" . antiInjection($zonerecherche2) . "%'";
  337. $sqlparam["where"][] = "syndicat = '" . $_SESSION["syndicat"] . "'";
  338. $result = executerRequeteSql($sqlparam);
  339. if (isset($result)) {
  340. $lnompersonne_rech = antiInjection($result[0]["nomreel"]);
  341. $lnoutilisateur_rech = antiInjection($result[0]["refutilisateur"]);
  342. $lutilisateur_rech = antiInjection($result[0]["utilisateur"]);
  343. $lnoemployeur_rech = antiInjection($result[0]["employeur"]);
  344. //$lmotdepasse_rech = antiInjection($result[0]["motdepasse"]);
  345. $lemail_rech = antiInjection($result[0]["email"]);
  346. } else {
  347. $module["resultatSQL"] = false;
  348. $module["message"] = $module["msg"]["rech_echec"];
  349. }
  350. break;
  351. }
  352. } else {
  353. unset($lnoutilisateur);
  354. unset($lutilisateur);
  355. unset($lnompersonne);
  356. unset($lnoemployeur);
  357. unset($lnomemployeur);
  358. unset($lemail);
  359. unset($lcellulaire);
  360. unset($lfournisseur);
  361. $lnoutilisateur = "";
  362. $lutilisateur = "";
  363. $lnompersonne = "";
  364. $lnoemployeur = "";
  365. $lnomemployeur = "";
  366. $lemail = "";
  367. $lcellulaire = "";
  368. $lfournisseur = "";
  369. }
  370. $i = 0;
  371. unset($sqlparam);
  372. $sqlparam["connexion"] = "maitre";
  373. $sqlparam["table"][] = "administration";
  374. $sqlparam["champs"][] = "refutilisateur";
  375. $sqlparam["champs"][] = "utilisateur";
  376. $sqlparam["champs"][] = "nomreel";
  377. $sqlparam["champs"][] = "email";
  378. $sqlparam["champs"][] = "motdepasse";
  379. $sqlparam["champs"][] = "employeur";
  380. $sqlparam["champs"][] = "cellulaire";
  381. $sqlparam["champs"][] = "fournisseur";
  382. $sqlparam["champs"][] = "CONCAT(gestionsite,gestionutilisateur) as niveau";
  383. $sqlparam["champs"][] = "enligne";
  384. $sqlparam["champs"][] = "acces";
  385. $sqlparam["where"][] = "syndicat='" . antiInjection($_SESSION["syndicat"]) . "'";
  386. $sqlparam["where"][] = "acces < 2";
  387. $sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . "," . $nombreaffiche;
  388. $sqlparam["ordre"][] = $rtri;
  389. unset($sqltemp);
  390. if (isset($zonerecherche) && !empty($zonerecherche)) {
  391. $sqltemp = "CONCAT_WS (' ',utilisateur, nomreel, email) like '%" . antiInjection($zonerecherche) . "%'";
  392. $sqlparam["where"][] = $sqltemp;
  393. $sqlparam["champs"][] = "(SELECT count(administration.refutilisateur) FROM administration where syndicat='" . antiInjection($_SESSION["syndicat"]) . "' AND acces<2 AND $sqltemp ) as compte";
  394. $module["recherche"]["zonerecherche"] = $zonerecherche;
  395. } else {
  396. $sqlparam["champs"][] = "(SELECT count(administration.refutilisateur) FROM administration WHERE syndicat='" . antiInjection($_SESSION["syndicat"]) . "' and acces<2) as compte";
  397. }
  398. $result = executerRequeteSql($sqlparam);
  399. $module["compte"] = $result[0]["compte"];
  400. print preparerModule($module);
  401. unset($sqlparamEmployeur);
  402. $sqlparamEmployeur["type"] = "SELECT";
  403. $sqlparamEmployeur["table"][] = "employeurs";
  404. $sqlparamEmployeur["champs"][] = "refemployeur as refid";
  405. $sqlparamEmployeur["champs"][] = "nomemployeur as valeur";
  406. $sqlparamEmployeur["ordre"][] = "refemployeur ASC";
  407. $resultEmployeur = executerRequeteSql($sqlparamEmployeur);
  408. // Liste des employeurs
  409. if (isset($resultEmployeur)) {
  410. foreach ($resultEmployeur as $clef => $valeur) {
  411. $structEmployeur[$valeur["refid"]] = $valeur["valeur"];
  412. }
  413. }
  414. if (isset($result)) {
  415. $i = ($nopage - 1) * $nombreaffiche + 1;
  416. unset($style);
  417. $style = "border:1px solid #cfcfcf; font-family:arial, helvetica, sans-serif; ";
  418. $style .= "font-size:9pt; margin-left:5px; margin-right:5px;";
  419. foreach ($result as $clef => $champs) {
  420. if ($champs["niveau"] == "XXXXXX") {
  421. $niveau = "Super Admin";
  422. $suppr = false;
  423. } elseif ($champs["niveau"] == "OuiOui") {
  424. $niveau = "Administrateur";
  425. $suppr = false;
  426. } else {
  427. $niveau = "Utilisateur";
  428. $suppr = true;
  429. }
  430. unset($opr, $img, $couleur);
  431. if ($champs["acces"] == 0) {
  432. $couleur = "";
  433. $opr = "Bloquer";
  434. $img = 23;
  435. } else {
  436. $couleur = "color:#ff0000;";
  437. $opr = "Autoriser";
  438. $img = 24;
  439. }
  440. unset($mdp);
  441. $mdp = str_repeat("*", 8);
  442. print "<tr style='$couleur'>\n";
  443. print "<td style='$style'>$i</td>\n";
  444. print "<td style='$style'>" . $champs["utilisateur"] . "</TD>\n";
  445. print "<td style='$style'>" . $champs["nomreel"] . "</TD>\n";
  446. print "<td style='$style'>" . $structEmployeur[$champs["employeur"]] . "</TD>\n";
  447. print "<td style='$style'>" . $champs["email"] . "</TD>\n";
  448. print "<td style='$style'>" . $niveau . "</TD>\n";
  449. print "<td style='$style'>";
  450. print "<form action='index2.php?page=liste_utilisateurs' method='POST'>\n";
  451. print "<input name='lnoutilisateur' type='hidden' value='" . $champs["refutilisateur"] . "'>\n";
  452. //Jeton de sécurité
  453. print "<input name='jeton' type='hidden' value='$jeton'>\n";
  454. //Utilisateur en ligne ou pas (indicateur seulement)
  455. if ($champs["enligne"] == 1) {
  456. print "<IMG SRC='images/icones/icones_21.png' alt='Utilisateur en ligne' title='Utilisateur en ligne'>";
  457. } else {
  458. print "<IMG SRC='images/icones/icones_22.png' alt='Utilisateur hors ligne' title='Utilisateur hors ligne'>";
  459. }
  460. if ($champs["niveau"] === "XXXXXX" && $_SESSION['gestion_site'] = "XXX" && $_SESSION['gestion_utilisateur'] === "XXX") {
  461. //Modification de la fiche de l'utilisateur
  462. if ($champs["acces"] == 0) {
  463. print "<INPUT style='cursor:pointer;' TYPE='button' class='modifier' onclick='changetitre(2);mettrevaleurdansid(\"" . $champs["refutilisateur"] . "\",\"" . $champs["utilisateur"] . "\",\"" . $champs["nomreel"] . "\",\"" . $champs["email"] . "\",";
  464. print "\"" . $champs["employeur"] . "\",\"" . $champs["cellulaire"] . "\",\"" . $champs["fournisseur"] . "\");' title='Modifier'>\n";
  465. }
  466. //Blocage de l'accès et suppression
  467. if ($suppr) {
  468. print "<input style='background:url(images/icones/icones_$img.png) no-repeat; width:24px; height:24px; color:transparent; border:0;' type='submit' name='action' Value='$opr' title=\"$opr l'accès\">\n";
  469. print "<input style='background:url(images/icones/icones_33.png) no-repeat; width:24px; height:24px; color:transparent; border:0;' type='submit' name='action' Value='Supprimer' onclick=\"if (!window.confirm('Voulez-vous vraiment supprimer cet utilisateur ( " . trim($champs["utilisateur"]) . " )? Ceci est définitif!!')) {return false;}\" title='Supprimer'>\n";
  470. }
  471. } elseif ($champs["niveau"] !== "XXXXXX" && $_SESSION['gestion_site'] = "Oui" && $_SESSION['gestion_utilisateur'] === "Oui") {
  472. //Modification de la fiche de l'utilisateur
  473. if ($champs["acces"] == 0) {
  474. print "<INPUT style='cursor:pointer;' TYPE='button' class='modifier' onclick='changetitre(2);mettrevaleurdansid(\"" . $champs["refutilisateur"] . "\",\"" . $champs["utilisateur"] . "\",\"" . $champs["nomreel"] . "\",\"" . $champs["email"] . "\",";
  475. print "\"" . $champs["employeur"] . "\",\"" . $champs["cellulaire"] . "\",\"" . $champs["fournisseur"] . "\");' title='Modifier'>\n";
  476. }
  477. //Blocage de l'accès et suppression
  478. if ($suppr) {
  479. print "<input style='background:url(images/icones/icones_$img.png) no-repeat; width:24px; height:24px; color:transparent; border:0;' type='submit' name='action' Value='$opr' title=\"$opr l'accès\">\n";
  480. print "<input style='background:url(images/icones/icones_33.png) no-repeat; width:24px; height:24px; color:transparent; border:0;' type='submit' name='action' Value='Supprimer' onclick=\"if (!window.confirm('Voulez-vous vraiment supprimer cet utilisateur ( " . trim($champs["utilisateur"]) . " )? Ceci est définitif!!')) {return false;}\" title='Supprimer'>\n";
  481. }
  482. }
  483. print "</form>\n";
  484. print "</td>\n";
  485. print "</tr>\n";
  486. $i++;
  487. }
  488. }
  489. print "</table>";
  490. ?>
  491. <script type='text/javascript'>
  492. function ValidationFormulaire()
  493. {
  494. var msgCode = "Code de l'utilisateur requis.";
  495. var msgNom = "Nom de l'utilisateur requis.";
  496. var msgEmail = "Adresse de courriel valide requise.";
  497. var msgEmployeur = "Nom de l'employeur requis.";
  498. var msgCellulaire = "Numéro de téléphone cellulaire valide requis .";
  499. var msgFournisseur = "Nom du fournisseur du service cellulaire requis.";
  500. var frm = document.frmModif;
  501. if ($("#lutilisateur").val() === "") {
  502. jAlert(msgCode);
  503. frm.lutilisateur.focus();
  504. return false;
  505. } else if ($("#lnompersonne").val() === "") {
  506. jAlert(msgNom);
  507. frm.lnompersonne.focus();
  508. return false;
  509. } else if (!isCourrielValide($("#lemail").val())) {
  510. jAlert(msgEmail);
  511. frm.lemail.focus();
  512. return false;
  513. } else if (frm.lnoemployeur.selectedIndex === 0) {
  514. jAlert(msgEmployeur);
  515. frm.lnoemployeur.focus();
  516. return false;
  517. } else if ($("#lcellulaire").val() === "") {
  518. jAlert(msgCellulaire);
  519. frm.lcellulaire.focus();
  520. return false;
  521. } else if (frm.lfournisseur.selectedIndex === 0) {
  522. jAlert(msgFournisseur);
  523. frm.lfournisseur.focus();
  524. return false;
  525. }
  526. closeRemote();
  527. return true;
  528. }
  529. // Mise en place des masques de saisie
  530. $(document).ready(function () {
  531. $("#lcellulaire").mask("(999) 999-9999");
  532. $("#frmModif").validate();
  533. $("#boutonaction[value='Retirer le facteur à double authentification']").on("click", function () {
  534. $("#fenetremodale").append("<br/><p style='color:red; font-weight:700;'>\n\
  535. Veuillez patienter... Ne pas fermer cette boîte de message. Elle se fermera automatiquement.</p>");
  536. });
  537. });
  538. </script>
  539. <?php
  540. // Pagination
  541. print "<table style='width:968px; margin:auto;'>"; //1200
  542. print "<tr><td style='vertical-align:bottom;'>";
  543. print $seqpage;
  544. print "</td>";
  545. print "<td style='width:320px; text-align:right;'>";
  546. //Haut de page
  547. if ($nombreaffiche > 15) {
  548. print "<a href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
  549. print "<a name='baspage'>";
  550. }
  551. print "</td></tr>";
  552. print "</table>";
  553. //Début de formulaire de saisie
  554. print fenetreModaleDebut($module["fenetre"], $SCRIPT_NAME, $jeton);
  555. //Valeurs par défaut
  556. if (!isset($lnoutilisateur)) {
  557. $lnoutilisateur = "";
  558. }
  559. if (!isset($lutilisateur)) {
  560. $lutilisateur = "";
  561. }
  562. if (!isset($lnompersonne)) {
  563. $lnompersonne = "";
  564. }
  565. if (!isset($lemail)) {
  566. $lemail = "";
  567. }
  568. if (!isset($lnoemployeur)) {
  569. $lnoemployeur = "";
  570. }
  571. if (!isset($lcellulaire)) {
  572. $lcellulaire = "";
  573. }
  574. if (!isset($lfournisseur)) {
  575. $lfournisseur = "";
  576. }
  577. print"<input type='hidden' id='lemploye' name='lnoutilisateur' value='$lnoutilisateur'>";
  578. print "<table width='100%'>\n";
  579. print "<tr>\n";
  580. print "<td>Code utilisateur : </td>\n";
  581. print "<td><INPUT TYPE='text' NAME='lutilisateur' id='lutilisateur' Value='$lutilisateur' SIZE='50' MAXLENGTH='50'></td>\n";
  582. print "</tr>\n";
  583. print "<tr>\n";
  584. print "<td>Nom de la personne : </td>\n";
  585. print "<td><INPUT TYPE='text' NAME='lnompersonne' id='lnompersonne' Value='$lnompersonne' SIZE='50' MAXLENGTH='50'></td>";
  586. print "</tr>\n";
  587. print "<tr>\n";
  588. print "<td>Adresse de courriel : </td>\n";
  589. print "<td><INPUT TYPE='text' NAME='lemail' id='lemail' Value='$lemail' SIZE='50' MAXLENGTH='50'></td>\n";
  590. print "</tr>\n";
  591. print "<tr>\n";
  592. print "<td>Employeur : </td>\n";
  593. print "<td>\n";
  594. unset($sqlparam2);
  595. $sqlparam2["type"] = "SELECT";
  596. $sqlparam2["table"][] = "employeurs";
  597. $sqlparam2["champs"][] = "refemployeur as refid";
  598. $sqlparam2["champs"][] = "nomemployeur as valeur";
  599. $sqlparam2["ordre"][] = "refemployeur ASC";
  600. $result2 = executerRequeteSql($sqlparam2);
  601. print "<select name='lnoemployeur' id='lnoemployeur'>\n<option>-----</option>\n";
  602. foreach ($result2 as $clef => $item) {
  603. $checked = ($item["refid"] === $lnoemployeur) ? "checked" : "";
  604. print "<option value='" . $item["refid"] . "'$checked>" . $item["valeur"] . "</option>\n";
  605. }
  606. print "</select>\n";
  607. print "</td>\n";
  608. print "</tr>\n";
  609. print "<tr>\n";
  610. print "<td>Numéro de cellulaire : </td>\n";
  611. print "<td><INPUT TYPE='text' NAME='lcellulaire' id='lcellulaire' Value='$lcellulaire' SIZE='14' MAXLENGTH='14'></td>\n";
  612. print "</tr>\n";
  613. print "<tr>\n";
  614. print "<tr>\n";
  615. print "<td>Fournisseur cellulaire : </td>\n";
  616. print "<td>\n";
  617. unset($result3);
  618. $result3 = getFournisseursCellulaire();
  619. unset($param);
  620. $param["form"] = "menu2";
  621. $param["nom"] = "lfournisseur";
  622. $param["etq"] = "";
  623. $param["defaut"] = sprintf("%s", $lfournisseur);
  624. $param["donnees"] = $result3;
  625. $param["menu"] = true;
  626. //TODO Mettre un évènement vide pour contourner le gestionnaire interne. À corriger.
  627. $param["evt"] = "blank";
  628. $param["style"] = "";
  629. print formListbox2($param);
  630. print "</td>\n";
  631. print "</tr>\n";
  632. print fenetreModaleFin(array($module["actionajoutbouton"], "Créer un nouveau mot de passe", "Retirer le facteur à double authentification"));
  633. if (isset($action) && $action == "Recherche") {
  634. print "<script type='text/javascript'>";
  635. print " $(document).ready(function() {\n";
  636. print " changetitre(2);\n";
  637. print " mettrevaleurdansid(\"" . sprintf("%d", $lnoutilisateur_rech) . "\",\"$lutilisateur_rech\",\"$lnompersonne_rech\",\"$lemail_rech\");\n";
  638. print " });";
  639. print "</script>\n";
  640. }