Skip to content
Extraits de code Groupes Projets
Valider 0b81261a rédigé par vbochet's avatar vbochet
Parcourir les fichiers

Modification du modèle et du contrôleur pour la connexion. Prise en compte de...

Modification du modèle et du contrôleur pour la connexion. Prise en compte de la vérification du password hashé. Migration des comparaisons du modèle vers le contrôleur.
parent 90b3a3af
Aucune branche associée trouvée
Aucune étiquette associée trouvée
2 requêtes de fusion!21Merge de Dev dans Master,!1Merge de dev-nestor sur dev
...@@ -10,7 +10,7 @@ class ConnexionController extends Controller { // classe de contrôleur pour la ...@@ -10,7 +10,7 @@ class ConnexionController extends Controller { // classe de contrôleur pour la
} }
public function verify() { // vérifie que les identifiants sont valides par rapport à la BDD public function verify() { // vérifie que les identifiants sont valides par rapport à la BDD
// méthode basique avec un stockage de mdp en clair, ce qu'on ne fera bien sûr pas ! // méthode avec un stockage de mdp hashé selon la fonction password_hash()
if(!isset($_POST['login']) || !isset($_POST['password'])) { // si l'une des données manque, erreur if(!isset($_POST['login']) || !isset($_POST['password'])) { // si l'une des données manque, erreur
//appeler une fonction d'erreur //appeler une fonction d'erreur
echo "<h1>Erreur : variables absentes</h1>"; echo "<h1>Erreur : variables absentes</h1>";
...@@ -18,17 +18,25 @@ class ConnexionController extends Controller { // classe de contrôleur pour la ...@@ -18,17 +18,25 @@ class ConnexionController extends Controller { // classe de contrôleur pour la
} }
$pseudo = $_POST['login']; $pseudo = $_POST['login'];
$password = $_POST['password']; $userpassword = $_POST['password']; //le mot de passe utilisateur
$bddpassword = Connexion::getPassword($pseudo); // le hash du mot de passe stocké en BDD
$result = Connexion::check($pseudo, $password); // vérifie si existe en base et a bon mdp if($bddpassword == null) { // l'utilisateur n'existe pas => code d'erreur 0
if($result == 1) { // connexion valide session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["connexionErrCode"] = 0; // on stocke le code d'erreur
header('Location:../connexion'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne, ne me demandez pas pourquoi !)
}
else { // l'utilisateur existe
if(password_verify($userpassword, $bddpassword)) { // la connexion a réussi
header('Location:valid'); // on redirige vers la page OK header('Location:valid'); // on redirige vers la page OK
} }
else { else { // sinon, c'est que le mot de passe est faux
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["connexionErrCode"] = $result; // on stocke le code d'erreur $_SESSION["connexionErrCode"] = 2; // on stocke le code d'erreur
header('Location:../connexion'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne, ne me demandez pas pourquoi !) header('Location:../connexion'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne, ne me demandez pas pourquoi !)
} }
} }
} }
}
...@@ -2,25 +2,18 @@ ...@@ -2,25 +2,18 @@
class Connexion extends Model { // classe de modèle pour la connexion au site class Connexion extends Model { // classe de modèle pour la connexion au site
public static function check($pseudo, $pass) { // méthode permettant de vérifier la validité d'identifiants d'un membre dans la BDD public static function getPassword($pseudo) { // méthode permettant de récupérer le password hashé d'un membre dans la BDD
// renvoie 1 si le membre existe et que son mot de passe correspond // renvoie le mot de passe si le membre existe
// renvoie 2 si le mot de passe est faux // renvoie null si le membre n'existe pas
// renvoie 0 si le membre n'existe pas
$db = Database::getInstance(); // on récupère la connexion à la BDD $db = Database::getInstance(); // on récupère la connexion à la BDD
$sql = "SELECT password FROM profils WHERE pseudo = :pseudo"; $sql = "SELECT password FROM R_joueur WHERE pseudo = :pseudo";
$req = $db->prepare($sql); // on prépare la requête $req = $db->prepare($sql); // on prépare la requête
//$req->setFetchMode(PDO::FETCH_CLASS, "Profil"); // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
$req->execute(array(":pseudo" => $pseudo)); // on remplace les variables dans la requête $req->execute(array(":pseudo" => $pseudo)); // on remplace les variables dans la requête
$return = 0; //valeur par défaut $return = null; //valeur par défaut du retour
if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe
if($result['password'] == $pass) { // si les mdp correspondent, alors c'est bon $return = $result['password']; // on récupère le mdp hashé pour le retourner
$return = 1;
}
else { // sinon, il y a ppb dans les mdp
$return = 2;
}
} }
return $return; return $return;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter