123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- define("LIBERATIONSWEB", 20091223);
- ini_set('display_errors', 'Off');
- //Librairie de fonctions
- require_once (__DIR__ . '/vendor/autoload.php');
- require_once(__DIR__ . "/lib/libconfig.inc.php");
- require_once(__DIR__ . "/lib/libfonctions.inc.php");
- require_once(__DIR__ . "/lib/libsession.inc.php");
- require_once(__DIR__ . "/lib/libmysql.inc.php");
- require_once(__DIR__ . "/lib/libencode.inc.php");
- require_once(__DIR__ . "/lib/libcourriel.inc.php");
- require_once(__DIR__ . "/lib/lib2fa.inc.php");
- session_cache_expire(60);
- session_start();
- unset($blocage);
- $blocage = 0;
- // Saisie du nom d'utilisateur, mot de passe et adresse courriel.
- unset($nomUtilisateur, $motDePasseUtilisateur, $emailUtilisateur, $token);
- $nomUtilisateur = antiInjection(filter_input(INPUT_POST, 'nomUtilisateur'));
- $motDePasseUtilisateur = antiInjection(filter_input(INPUT_POST, 'motDePasseUtilisateur'));
- $token2fa = antiInjection(filter_input(INPUT_POST, 'token2fa'));
- //Validation des renseignements dans la base de données
- if ($nomUtilisateur != "") {
- unset($sqlparam);
- $sqlparam["connexion"] = "maitre";
- $sqlparam["table"][] = "administration";
- $sqlparam["where"][] = sprintf("utilisateur = '%s'", addslashes($nomUtilisateur));
- $sqlparam["where"][] = "blocage=0"; //Doit avoir accès à l'application
- $sqlparam["limite"] = 1;
- //Exécution de la requête mySQL et affectation du nombre de rangées valides dans la table.
- $result = executerRequeteSql($sqlparam);
- } else {
- $result = null;
- }
- if (is_array($result) && !empty($result)) {
- $password_hash = $result[0]["hashloginmps"];
- $secret2fa = $result[0]["secret2fa"];
- $temporaire = $result[0]["temporaire"];
- // Mot de passe temporaire assigné, doit être changer
- // OU
- // Token2fa manquant
- // OU
- // Situation normale, tout est ok.
-
- if (
- //Demande de changement de mot de passe obligatoire
- $temporaire == 1 ||
- //Code 2FA vide dans la bd et dans le formulaire, avec mot de passe valide
- (empty($token2fa) && empty($secret2fa)) ||
- (
- // token 2fa valide
- !empty($token2fa) && check2fa($secret2fa, $token2fa) &&
- // mot de passe valide
- password_verify($motDePasseUtilisateur, $password_hash)
- )
- ) {
- // Ajoute l'utilisateur à une variable de session.
- // et les droits de gestion selon l'utilisateur
- $noutilisateur = $result[0]["refutilisateur"];
- $emailUtilisateur = $result[0]["email"];
- $_SESSION['noutilisateur'] = $noutilisateur; // Identifiant unique dans la bd
- $_SESSION['utilisateur'] = $nomUtilisateur; // Nom de l'utilisateur
- $_SESSION['syndicat'] = $result[0]["syndicat"]; // Acronyme du syndicat
- $_SESSION['gestion_site'] = $result[0]["gestionsite"]; // Droit de gestion du site web - pour admin seulement (Oui ou Non)
- $_SESSION['gestion_utilisateur'] = $result[0]["gestionutilisateur"]; // Droit de gestion du site web - pour admin seulement (Oui ou Non)
- $_SESSION['employeur'] = $result[0]["employeur"]; // Nom de l'employeur
- $_SESSION['lieutravail'] = $result[0]["nomlieutravail"]; // Nom du lieu de travail
- $_SESSION['UtilisateurAutorisationInscription'] = $result[0]["syndicat"]; // À venir...
- $_SESSION['logo'] = $result[0]["logo"]; // Logo du syndicat
- $_SESSION['nomreel'] = $result[0]["nomreel"]; // Nom réel de la personne
- $_SESSION['temps'] = getMicroTime(); // Temps de connexion
- $_SESSION['adressecourriel'] = $emailUtilisateur; // Adresse courriel
- $_SESSION['jeton'] = prepareToken(); // Jeton de sécurité Bearer
- $_SESSION["syndicatnom"] = $result[0]["syndicat"]; // Nom du syndicat
- $_SESSION['HTTP_USER_AGENT'] = md5(filter_input(INPUT_SERVER, 'HTTP_USER_AGENT')); // Agent Http
- $_SESSION["2fa_set"] = !empty($secret2fa); // Flag de sécurité si le 2fa est configuré ou pas
- $_SESSION["temporaire"] = $temporaire; // Flag de sécurité pour mot de pqasse temporaire
- session_regenerate_id(true);
- updateSessionUtilisateur('validation.php', "Validation de l`utilisateur au login.");
- $jeton = $_SESSION['jeton'];
- header("Location:index2.php?jeton=$jeton");
- //Mauvaise information (nom d'utilisateur, token 2fa ou mot de passe)
- } else {
- unset($sqlparam);
- $sqlparam["connexion"] = "maitre";
- $sqlparam["table"][] = "administration";
- $sqlparam["where"][] = sprintf("utilisateur = '%s'", addslashes($nomUtilisateur));
- $sqlparam["limite"] = 1;
- $result = executerRequeteSql($sqlparam);
- if (is_array($result) && !empty($result) && $result[0]["blocage"] == 0) {
- // Bloque l'accès en cas d'erreur
- unset($sqlparam);
- $sqlparam["connexion"] = "maitre";
- $sqlparam["type"] = "UPDATE";
- $sqlparam["table"][] = "administration";
- $sqlparam["where"][] = sprintf("utilisateur = '%s'", addslashes($nomUtilisateur));
-
- // Numérotation de l'essai.
- if ($result[0]["essais"] < 2) {
- $sqlparam["champs"]["essais"] = $result[0]["essais"] + 1;
- $blocage = -1;
- } else {
- // Blocage du compte
- $sqlparam["champs"]["essais"] = 3;
- $sqlparam["champs"]["blocage"] = 0;
- $blocage = -10;
- }
- $result = executerRequeteSql($sqlparam);
- } elseif (is_array($result) && !empty($result) && $result[0]["blocage"] == 1) {
- $blocage = -10;
- }
- fermeSessionUtilisateur($blocage);
-
- }
- // Autre situation..... ?
- // Prendre aucune chance avec les autres situations.
- } else {
- //1
- header("Location:index.php?msg=1");
- }
|