liste_utilisateurs.inc.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  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["table"][] = "administration";
  188. $sqlparam["connexion"] = "maitre";
  189. $sqlparam["champs"]["utilisateur"] = "'$lutilisateur'";
  190. $sqlparam["champs"]["nomreel"] = "'$lnompersonne'";
  191. if ($action == "Ajouter la fiche de l'utilisateur") {
  192. $sqlparam["champs"]["hashloginmps"] = password_hash($lmotdepasse, PASSWORD_DEFAULT);
  193. }
  194. $sqlparam["champs"]["email"] = "'$lemail'";
  195. $sqlparam["champs"]["syndicat"] = "'" . $_SESSION["syndicat"] . "'";
  196. $sqlparam["champs"]["employeur"] = sprintf("'%d'", $lnoemployeur);
  197. $sqlparam["champs"]["cellulaire"] = "'$lcellulaire'";
  198. $sqlparam["champs"]["fournisseur"] = "'$lfournisseur'";
  199. $sqlparam["champs"]["enligne"] = 1;
  200. $result = executerRequeteSql($sqlparam);
  201. if ($action == "Ajouter la fiche de l'utilisateur") {
  202. unset($sqlparam, $result2);
  203. $sqlparam["connexion"] = "maitre";
  204. $sqlparam["table"][] = "administration";
  205. $sqlparam["champs"][] = "refutilisateur";
  206. $sqlparam["champs"][] = "utilisateur";
  207. $sqlparam["champs"][] = "nomreel";
  208. $sqlparam["champs"][] = "email";
  209. $sqlparam["where"][] = "utilisateur = '$lutilisateur'";
  210. $sqlparam["where"][] = "nomreel = '$lnompersonne'";
  211. $result2 = executerRequeteSql($sqlparam);
  212. $adresse = $result2[0]["email"];
  213. $utilisateur = $result2[0]["nomreel"];
  214. $resultEmail = envoieCourrielConfirmation($adresse, $lnompersonne, $lmotdepasse);
  215. }
  216. if (isset($result) && $action == "Ajouter la fiche de l'utilisateur" && $resultEmail === "Message envoyé") {
  217. $module["resultatSQL"] = true;
  218. $module["message"] = $module["msg"]["maj_ok"];
  219. } elseif (isset($result) && $action == "Modifier la fiche de l'utilisateur") {
  220. $module["resultatSQL"] = true;
  221. $module["message"] = $module["msg"]["maj_ok"];
  222. } else {
  223. $module["resultatSQL"] = false;
  224. $module["message"] = $module["msg"]["maj_echec"];
  225. if (!empty($resultEmail)) {
  226. $module["message"] .= $resultEmail;
  227. }
  228. }
  229. }
  230. }
  231. break;
  232. case "Bloquer":
  233. case "Autoriser":
  234. $lnoutilisateur = antiInjection($lnoutilisateur);
  235. $sqlparam["type"] = "UPDATE";
  236. $sqlparam["connexion"] = "maitre";
  237. $sqlparam["table"][] = "administration";
  238. $sqlparam["where"][] = "refutilisateur = '$lnoutilisateur'";
  239. $val = ($action == "Bloquer") ? 1 : 0;
  240. // Ne pas réactiver le flag «enligne» après un blocage.
  241. // L'utilisateur doit se brancher à nouveau si son compte est débloqué.
  242. if ($action == "Bloquer") {
  243. $sqlparam["champs"]["enligne"] = 0;
  244. }
  245. $sqlparam["champs"]["acces"] = sprintf("%d", $val);
  246. $result = executerRequeteSql($sqlparam);
  247. if (isset($result)) {
  248. $module["resultatSQL"] = true;
  249. $module["message"] = ($action == "Bloquer") ? $module["msg"]["maj_utl_bloque"] : $module["msg"]["maj_utl_autorise"];
  250. } else {
  251. $module["resultatSQL"] = false;
  252. $module["message"] = $module["msg"]["maj_echec"];
  253. }
  254. break;
  255. case "Supprimer":
  256. $lnoutilisateur = antiInjection($lnoutilisateur);
  257. $sqlparam["type"] = "UPDATE";
  258. $sqlparam["connexion"] = "maitre";
  259. $sqlparam["table"][] = "administration";
  260. $sqlparam["where"][] = "refutilisateur = '$lnoutilisateur'";
  261. unset($val);
  262. $val = 2;
  263. $sqlparam["champs"]["acces"] = sprintf("'%d'", $val);
  264. $result = executerRequeteSql($sqlparam);
  265. if (isset($result)) {
  266. $module["resultatSQL"] = true;
  267. $module["message"] = $module["msg"]["maj_utl_suppr"];
  268. } else {
  269. $module["resultatSQL"] = false;
  270. $module["message"] = $module["msg"]["maj_echec"];
  271. }
  272. break;
  273. case "Créer un nouveau mot de passe":
  274. $n_mp = creerNouveauMotDePasse();
  275. $sqlparam["type"] = "UPDATE";
  276. $sqlparam["connexion"] = "maitre";
  277. $sqlparam["table"][] = "administration";
  278. $sqlparam["where"][] = sprintf("refutilisateur = '%d'", $lnoutilisateur);
  279. $sqlparam["champs"]["hashloginmps"] = "'" . password_hash($n_mp, PASSWORD_DEFAULT) . "'";
  280. $sqlparam["champs"]["temporaire"] = 1;
  281. $result = executerRequeteSql($sqlparam);
  282. unset($sqlparam, $result2);
  283. $sqlparam["type"] = "INSERT";
  284. $sqlparam["connexion"] = "maitre";
  285. $sqlparam["table"][] = "historique_mdp";
  286. $sqlparam["champs"]["noutilisateur"] = sprintf("'%d'", $lnoutilisateur);
  287. $sqlparam["champs"]["hashloginmps"] = "'" . password_hash($n_mp, PASSWORD_DEFAULT) . "'";
  288. $result2 = executerRequeteSql($sqlparam);
  289. unset($sqlparam, $result3);
  290. $sqlparam["connexion"] = "maitre";
  291. $sqlparam["table"][] = "administration";
  292. $sqlparam["champs"][] = "refutilisateur";
  293. $sqlparam["champs"][] = "nomreel";
  294. $sqlparam["champs"][] = "email";
  295. $sqlparam["where"][] = "refutilisateur = '" . $lnoutilisateur . "'";
  296. $result3 = executerRequeteSql($sqlparam);
  297. $adresse = $result3[0]["email"];
  298. $utilisateur = $result3[0]["nomreel"];
  299. $resultEmail = envoieCourrielConfirmation($adresse, $utilisateur, $n_mp);
  300. if (isset($result) && $resultEmail === "Message envoyé") {
  301. $module["resultatSQL"] = true;
  302. $module["message"] = $module["msg"]["maj_utl_mdp"];
  303. } else {
  304. $module["resultatSQL"] = false;
  305. $module["message"] = $module["msg"]["maj_echec"];
  306. }
  307. break;
  308. case "Retirer le facteur à double authentification":
  309. unset($sqlparam, $result);
  310. $sqlparam["type"] = "UPDATE";
  311. $sqlparam["connexion"] = "maitre";
  312. $sqlparam["table"][] = "administration";
  313. $sqlparam["where"][] = sprintf("refutilisateur = '%d'", $lnoutilisateur);
  314. $sqlparam["champs"]["secret2fa"] = "null";
  315. $result = executerRequeteSql($sqlparam);
  316. unset($sqlparam, $result2);
  317. $sqlparam["connexion"] = "maitre";
  318. $sqlparam["table"][] = "administration";
  319. $sqlparam["champs"][] = "refutilisateur";
  320. $sqlparam["champs"][] = "nomreel";
  321. $sqlparam["champs"][] = "email";
  322. $sqlparam["where"][] = "refutilisateur = '" . $lnoutilisateur . "'";
  323. $result2 = executerRequeteSql($sqlparam);
  324. $adresse = $result2[0]["email"];
  325. $utilisateur = $result2[0]["nomreel"];
  326. $resultEmail = envoieCourrielConfirmation2FA($adresse, $utilisateur);
  327. if (isset($result) && $resultEmail === "Message envoyé") {
  328. $module["resultatSQL"] = true;
  329. $module["message"] = $module["msg"]["reset_2fa_succes"];
  330. } else {
  331. $module["resultatSQL"] = false;
  332. $module["message"] = $module["msg"]["reset_2fa_echec"];
  333. }
  334. break;
  335. case "Recherche":
  336. unset($sqlparam, $result);
  337. $zonerecherche = antiInjection($zonerecherche);
  338. $tab_rech = explode(",", $zonerecherche);
  339. $zonerecherche2 = trim($tab_rech[1]) . " " . trim($tab_rech[0]);
  340. $sqlparam["connexion"] = "maitre";
  341. $sqlparam["table"][] = "administration";
  342. $sqlparam["champs"][] = "refutilisateur";
  343. $sqlparam["champs"][] = "utilisateur";
  344. $sqlparam["champs"][] = "nomreel";
  345. $sqlparam["champs"][] = "email";
  346. $sqlparam["champs"][] = "employeur";
  347. $sqlparam["where"][] = "CONCAT(utilisateur, nomreel, email) LIKE '%" . antiInjection($zonerecherche2) . "%'";
  348. $sqlparam["where"][] = "syndicat = '" . $_SESSION["syndicat"] . "'";
  349. $result = executerRequeteSql($sqlparam);
  350. if (isset($result)) {
  351. $lnompersonne_rech = antiInjection($result[0]["nomreel"]);
  352. $lnoutilisateur_rech = antiInjection($result[0]["refutilisateur"]);
  353. $lutilisateur_rech = antiInjection($result[0]["utilisateur"]);
  354. $lnoemployeur_rech = antiInjection($result[0]["employeur"]);
  355. //$lmotdepasse_rech = antiInjection($result[0]["motdepasse"]);
  356. $lemail_rech = antiInjection($result[0]["email"]);
  357. } else {
  358. $module["resultatSQL"] = false;
  359. $module["message"] = $module["msg"]["rech_echec"];
  360. }
  361. break;
  362. }
  363. } else {
  364. unset($lnoutilisateur);
  365. unset($lutilisateur);
  366. unset($lnompersonne);
  367. unset($lnoemployeur);
  368. unset($lnomemployeur);
  369. unset($lemail);
  370. unset($lcellulaire);
  371. unset($lfournisseur);
  372. $lnoutilisateur = "";
  373. $lutilisateur = "";
  374. $lnompersonne = "";
  375. $lnoemployeur = "";
  376. $lnomemployeur = "";
  377. $lemail = "";
  378. $lcellulaire = "";
  379. $lfournisseur = "";
  380. }
  381. $i = 0;
  382. unset($sqlparam);
  383. $sqlparam["connexion"] = "maitre";
  384. $sqlparam["table"][] = "administration";
  385. $sqlparam["champs"][] = "refutilisateur";
  386. $sqlparam["champs"][] = "utilisateur";
  387. $sqlparam["champs"][] = "nomreel";
  388. $sqlparam["champs"][] = "email";
  389. $sqlparam["champs"][] = "motdepasse";
  390. $sqlparam["champs"][] = "employeur";
  391. $sqlparam["champs"][] = "cellulaire";
  392. $sqlparam["champs"][] = "fournisseur";
  393. $sqlparam["champs"][] = "CONCAT(gestionsite,gestionutilisateur) as niveau";
  394. $sqlparam["champs"][] = "enligne";
  395. $sqlparam["champs"][] = "acces";
  396. $sqlparam["where"][] = "syndicat='" . antiInjection($_SESSION["syndicat"]) . "'";
  397. $sqlparam["where"][] = "acces < 2";
  398. $sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . "," . $nombreaffiche;
  399. $sqlparam["ordre"][] = $rtri;
  400. unset($sqltemp);
  401. if (isset($zonerecherche) && !empty($zonerecherche)) {
  402. $sqltemp = "CONCAT_WS (' ',utilisateur, nomreel, email) like '%" . antiInjection($zonerecherche) . "%'";
  403. $sqlparam["where"][] = $sqltemp;
  404. $sqlparam["champs"][] = "(SELECT count(administration.refutilisateur) FROM administration where syndicat='" . antiInjection($_SESSION["syndicat"]) . "' AND acces<2 AND $sqltemp ) as compte";
  405. $module["recherche"]["zonerecherche"] = $zonerecherche;
  406. } else {
  407. $sqlparam["champs"][] = "(SELECT count(administration.refutilisateur) FROM administration WHERE syndicat='" . antiInjection($_SESSION["syndicat"]) . "' and acces<2) as compte";
  408. }
  409. $result = executerRequeteSql($sqlparam);
  410. $module["compte"] = $result[0]["compte"];
  411. print preparerModule($module);
  412. unset($sqlparamEmployeur);
  413. $sqlparamEmployeur["type"] = "SELECT";
  414. $sqlparamEmployeur["table"][] = "employeurs";
  415. $sqlparamEmployeur["champs"][] = "refemployeur as refid";
  416. $sqlparamEmployeur["champs"][] = "nomemployeur as valeur";
  417. $sqlparamEmployeur["ordre"][] = "refemployeur ASC";
  418. $resultEmployeur = executerRequeteSql($sqlparamEmployeur);
  419. // Liste des employeurs
  420. if (isset($resultEmployeur)) {
  421. foreach ($resultEmployeur as $clef => $valeur) {
  422. $structEmployeur[$valeur["refid"]] = $valeur["valeur"];
  423. }
  424. }
  425. if (isset($result)) {
  426. $i = ($nopage - 1) * $nombreaffiche + 1;
  427. unset($style);
  428. $style = "border:1px solid #cfcfcf; font-family:arial, helvetica, sans-serif; ";
  429. $style .= "font-size:9pt; margin-left:5px; margin-right:5px;";
  430. foreach ($result as $clef => $champs) {
  431. if ($champs["niveau"] == "XXXXXX") {
  432. $niveau = "Super Admin";
  433. $suppr = false;
  434. } elseif ($champs["niveau"] == "OuiOui") {
  435. $niveau = "Administrateur";
  436. $suppr = false;
  437. } else {
  438. $niveau = "Utilisateur";
  439. $suppr = true;
  440. }
  441. unset($opr, $img, $couleur);
  442. if ($champs["acces"] == 0) {
  443. $couleur = "";
  444. $opr = "Bloquer";
  445. $img = 23;
  446. } else {
  447. $couleur = "color:#ff0000;";
  448. $opr = "Autoriser";
  449. $img = 24;
  450. }
  451. unset($mdp);
  452. $mdp = str_repeat("*", 8);
  453. print "<tr style='$couleur'>\n";
  454. print "<td style='$style'>$i</td>\n";
  455. print "<td style='$style'>" . $champs["utilisateur"] . "</TD>\n";
  456. print "<td style='$style'>" . $champs["nomreel"] . "</TD>\n";
  457. print "<td style='$style'>" . $structEmployeur[$champs["employeur"]] . "</TD>\n";
  458. print "<td style='$style'>" . $champs["email"] . "</TD>\n";
  459. print "<td style='$style'>" . $niveau . "</TD>\n";
  460. print "<td style='$style'>";
  461. print "<form action='index2.php?page=liste_utilisateurs' method='POST'>\n";
  462. print "<input name='lnoutilisateur' type='hidden' value='" . $champs["refutilisateur"] . "'>\n";
  463. //Jeton de sécurité
  464. print "<input name='jeton' type='hidden' value='$jeton'>\n";
  465. //Utilisateur en ligne ou pas (indicateur seulement)
  466. if ($champs["enligne"] == 1) {
  467. print "<IMG SRC='images/icones/icones_21.png' alt='Utilisateur en ligne' title='Utilisateur en ligne'>";
  468. } else {
  469. print "<IMG SRC='images/icones/icones_22.png' alt='Utilisateur hors ligne' title='Utilisateur hors ligne'>";
  470. }
  471. if ($champs["niveau"] === "XXXXXX" && $_SESSION['gestion_site'] = "XXX" && $_SESSION['gestion_utilisateur'] === "XXX") {
  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. } elseif ($champs["niveau"] !== "XXXXXX" && $_SESSION['gestion_site'] = "Oui" && $_SESSION['gestion_utilisateur'] === "Oui") {
  483. //Modification de la fiche de l'utilisateur
  484. if ($champs["acces"] == 0) {
  485. print "<INPUT style='cursor:pointer;' TYPE='button' class='modifier' onclick='changetitre(2);mettrevaleurdansid(\"" . $champs["refutilisateur"] . "\",\"" . $champs["utilisateur"] . "\",\"" . $champs["nomreel"] . "\",\"" . $champs["email"] . "\",";
  486. print "\"" . $champs["employeur"] . "\",\"" . $champs["cellulaire"] . "\",\"" . $champs["fournisseur"] . "\");' title='Modifier'>\n";
  487. }
  488. //Blocage de l'accès et suppression
  489. if ($suppr) {
  490. 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";
  491. 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";
  492. }
  493. }
  494. print "</form>\n";
  495. print "</td>\n";
  496. print "</tr>\n";
  497. $i++;
  498. }
  499. }
  500. print "</table>";
  501. ?>
  502. <script type='text/javascript'>
  503. function ValidationFormulaire()
  504. {
  505. var msgCode = "Code de l'utilisateur requis.";
  506. var msgNom = "Nom de l'utilisateur requis.";
  507. var msgEmail = "Adresse de courriel valide requise.";
  508. var msgEmployeur = "Nom de l'employeur requis.";
  509. var msgCellulaire = "Numéro de téléphone cellulaire valide requis .";
  510. var msgFournisseur = "Nom du fournisseur du service cellulaire requis.";
  511. var frm = document.frmModif;
  512. if ($("#lutilisateur").val() === "") {
  513. jAlert(msgCode);
  514. frm.lutilisateur.focus();
  515. return false;
  516. } else if ($("#lnompersonne").val() === "") {
  517. jAlert(msgNom);
  518. frm.lnompersonne.focus();
  519. return false;
  520. } else if (!isCourrielValide($("#lemail").val())) {
  521. jAlert(msgEmail);
  522. frm.lemail.focus();
  523. return false;
  524. } else if (frm.lnoemployeur.selectedIndex === 0) {
  525. jAlert(msgEmployeur);
  526. frm.lnoemployeur.focus();
  527. return false;
  528. } else if ($("#lcellulaire").val() === "") {
  529. jAlert(msgCellulaire);
  530. frm.lcellulaire.focus();
  531. return false;
  532. } else if (frm.lfournisseur.selectedIndex === 0) {
  533. jAlert(msgFournisseur);
  534. frm.lfournisseur.focus();
  535. return false;
  536. }
  537. closeRemote();
  538. return true;
  539. }
  540. // Mise en place des masques de saisie
  541. $(document).ready(function () {
  542. $("#lcellulaire").mask("(999) 999-9999");
  543. $("#frmModif").validate();
  544. $("#boutonaction[value='Retirer le facteur à double authentification']").on("click", function () {
  545. $("#fenetremodale").append("<br/><p style='color:red; font-weight:700;'>\n\
  546. Veuillez patienter... Ne pas fermer cette boîte de message. Elle se fermera automatiquement.</p>");
  547. });
  548. });
  549. </script>
  550. <?php
  551. // Pagination
  552. print "<table style='width:968px; margin:auto;'>"; //1200
  553. print "<tr><td style='vertical-align:bottom;'>";
  554. print $seqpage;
  555. print "</td>";
  556. print "<td style='width:320px; text-align:right;'>";
  557. //Haut de page
  558. if ($nombreaffiche > 15) {
  559. print "<a href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
  560. print "<a name='baspage'>";
  561. }
  562. print "</td></tr>";
  563. print "</table>";
  564. //Début de formulaire de saisie
  565. print fenetreModaleDebut($module["fenetre"], $SCRIPT_NAME, $jeton);
  566. //Valeurs par défaut
  567. if (!isset($lnoutilisateur)) {
  568. $lnoutilisateur = "";
  569. }
  570. if (!isset($lutilisateur)) {
  571. $lutilisateur = "";
  572. }
  573. if (!isset($lnompersonne)) {
  574. $lnompersonne = "";
  575. }
  576. if (!isset($lemail)) {
  577. $lemail = "";
  578. }
  579. if (!isset($lnoemployeur)) {
  580. $lnoemployeur = "";
  581. }
  582. if (!isset($lcellulaire)) {
  583. $lcellulaire = "";
  584. }
  585. if (!isset($lfournisseur)) {
  586. $lfournisseur = "";
  587. }
  588. print"<input type='hidden' id='lemploye' name='lnoutilisateur' value='$lnoutilisateur'>";
  589. print "<table width='100%'>\n";
  590. print "<tr>\n";
  591. print "<td>Code utilisateur : </td>\n";
  592. print "<td><INPUT TYPE='text' NAME='lutilisateur' id='lutilisateur' Value='$lutilisateur' SIZE='50' MAXLENGTH='50'></td>\n";
  593. print "</tr>\n";
  594. print "<tr>\n";
  595. print "<td>Nom de la personne : </td>\n";
  596. print "<td><INPUT TYPE='text' NAME='lnompersonne' id='lnompersonne' Value='$lnompersonne' SIZE='50' MAXLENGTH='50'></td>";
  597. print "</tr>\n";
  598. print "<tr>\n";
  599. print "<td>Adresse de courriel : </td>\n";
  600. print "<td><INPUT TYPE='text' NAME='lemail' id='lemail' Value='$lemail' SIZE='50' MAXLENGTH='50'></td>\n";
  601. print "</tr>\n";
  602. print "<tr>\n";
  603. print "<td>Employeur : </td>\n";
  604. print "<td>\n";
  605. unset($sqlparam2);
  606. $sqlparam2["type"] = "SELECT";
  607. $sqlparam2["table"][] = "employeurs";
  608. $sqlparam2["champs"][] = "refemployeur as refid";
  609. $sqlparam2["champs"][] = "nomemployeur as valeur";
  610. $sqlparam2["ordre"][] = "refemployeur ASC";
  611. $result2 = executerRequeteSql($sqlparam2);
  612. print "<select name='lnoemployeur' id='lnoemployeur'>\n<option>-----</option>\n";
  613. foreach ($result2 as $clef => $item) {
  614. $checked = ($item["refid"] === $lnoemployeur) ? "checked" : "";
  615. print "<option value='" . $item["refid"] . "'$checked>" . $item["valeur"] . "</option>\n";
  616. }
  617. print "</select>\n";
  618. print "</td>\n";
  619. print "</tr>\n";
  620. print "<tr>\n";
  621. print "<td>Numéro de cellulaire : </td>\n";
  622. print "<td><INPUT TYPE='text' NAME='lcellulaire' id='lcellulaire' Value='$lcellulaire' SIZE='14' MAXLENGTH='14'></td>\n";
  623. print "</tr>\n";
  624. print "<tr>\n";
  625. print "<tr>\n";
  626. print "<td>Fournisseur cellulaire : </td>\n";
  627. print "<td>\n";
  628. unset($result3);
  629. $result3 = getFournisseursCellulaire();
  630. unset($param);
  631. $param["form"] = "menu2";
  632. $param["nom"] = "lfournisseur";
  633. $param["etq"] = "";
  634. $param["defaut"] = sprintf("%s", $lfournisseur);
  635. $param["donnees"] = $result3;
  636. $param["menu"] = true;
  637. //TODO Mettre un évènement vide pour contourner le gestionnaire interne. À corriger.
  638. $param["evt"] = "blank";
  639. $param["style"] = "";
  640. print formListbox2($param);
  641. print "</td>\n";
  642. print "</tr>\n";
  643. print fenetreModaleFin(array($module["actionajoutbouton"], "Créer un nouveau mot de passe", "Retirer le facteur à double authentification"));
  644. if (isset($action) && $action == "Recherche") {
  645. print "<script type='text/javascript'>";
  646. print " $(document).ready(function() {\n";
  647. print " changetitre(2);\n";
  648. print " mettrevaleurdansid(\"" . sprintf("%d", $lnoutilisateur_rech) . "\",\"$lutilisateur_rech\",\"$lnompersonne_rech\",\"$lemail_rech\");\n";
  649. print " });";
  650. print "</script>\n";
  651. }