Validation et nettoyage
continuous-integration/drone/push Build is passing Details

ServeurDeTest
Noé GARNIER 2 years ago
parent 96e45a72a3
commit 6a199bdc2b

@ -5,6 +5,8 @@ class VisitorModel
private EnigmeGateway $enigme_gateway; private EnigmeGateway $enigme_gateway;
private PartieGateway $partie_gateway; private PartieGateway $partie_gateway;
private UtilisateurGateway $utilisateur_gateway; private UtilisateurGateway $utilisateur_gateway;
private Nettoyage $nettoyage;
private Validation $validation;
function __construct() function __construct()
{ {
@ -13,6 +15,8 @@ class VisitorModel
$this->enigme_gateway = new EnigmeGateway(); $this->enigme_gateway = new EnigmeGateway();
$this->partie_gateway = new PartieGateway(); $this->partie_gateway = new PartieGateway();
$this->utilisateur_gateway = new UtilisateurGateway(); $this->utilisateur_gateway = new UtilisateurGateway();
$this->nettoyage = new Nettoyage();
$this->validation = new Validation();
} catch (Exception $e) { } catch (Exception $e) {
$error = $e->getMessage(); $error = $e->getMessage();
require($rep . $view['erreur']); require($rep . $view['erreur']);
@ -22,26 +26,28 @@ class VisitorModel
public function signUp() public function signUp()
{ {
global $sel, $error; global $sel, $error;
$validation = new Validation(); $email = $this->nettoyage->cleanEmail($_REQUEST['email']);
if (!$validation->ValidateEmail($_REQUEST['email'])) { if (!$this->validation->ValidateEmail($email)) {
$error = "Email invalides."; $error = "Email invalides.";
throw (new Exception("Email non valide")); throw (new Exception("Email non valide"));
} }
if (!$validation->ValidateUsername($_REQUEST['username'])) { $username = $this->nettoyage->clean($_REQUEST['username']);
if (!$this->validation->ValidateUsername($username)) {
$error = "Nom d'utilisateur invalides. Il ne doit pas contenir de caractère spéciaux."; $error = "Nom d'utilisateur invalides. Il ne doit pas contenir de caractère spéciaux.";
throw (new Exception("Pseudo non valide")); throw (new Exception("Pseudo non valide"));
} }
if (!$validation->ValidatePassword($_REQUEST['password'])) { $password = $this->nettoyage->clean($_REQUEST['password']);
if (!$this->validation->ValidatePassword($password)) {
$error = "Mots de passe invalides. Il ne doit pas dépasser 100 caractères."; $error = "Mots de passe invalides. Il ne doit pas dépasser 100 caractères.";
throw (new Exception("Mot de passe non valide")); throw (new Exception("Mot de passe non valide"));
} }
$j = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']); $j = $this->utilisateur_gateway->getUtilisateurByEmail($email);
if ($j->getEmail() != "null") { if ($j->getEmail() != "null") {
$error = "Email déjà utilisé."; $error = "Email déjà utilisé.";
throw (new Exception("Email déjà utilisé")); throw (new Exception("Email déjà utilisé"));
} }
$password = password_hash($_REQUEST['password'] . $sel, PASSWORD_DEFAULT); $password = password_hash($password . $sel, PASSWORD_DEFAULT);
$utilisateur = new Utilisateur($_REQUEST['email'], $_REQUEST['username'], $password, false); $utilisateur = new Utilisateur($email, $username, $password, false);
$this->utilisateur_gateway->insert($utilisateur); $this->utilisateur_gateway->insert($utilisateur);
$_SESSION['role'] = 'user'; $_SESSION['role'] = 'user';
$_SESSION['utilisateur'] = $utilisateur; $_SESSION['utilisateur'] = $utilisateur;
@ -49,17 +55,22 @@ class VisitorModel
public function login() public function login()
{ {
global $vue, $sel, $error; global $vue, $sel, $error;
$utilisateur = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']); $email = $this->nettoyage->cleanEmail($_REQUEST['email']);
if (!$this->validation->ValidateEmail($email)) {
$error = "Email invalides.";
throw (new Exception("Email non valide"));
}
$utilisateur = $this->utilisateur_gateway->getUtilisateurByEmail($email);
if ($utilisateur->getEmail() == "null") { if ($utilisateur->getEmail() == "null") {
$error = "Utilisateur non trouvé."; $error = "Utilisateur non trouvé.";
throw new Exception("Utilisateur introuvable"); throw new Exception("Utilisateur introuvable");
} }
$mdp = $this->utilisateur_gateway->getMdpByEmail($_REQUEST['email']); $mdp = $this->utilisateur_gateway->getMdpByEmail($email);
if (! password_verify($_REQUEST['password'] . $sel, $mdp)) { if (! password_verify($_REQUEST['password'] . $sel, $mdp)) {
$error = "Mot de passe incorrect."; $error = "Mot de passe incorrect.";
throw new Exception("Mot de passe invalide"); throw new Exception("Mot de passe invalide");
} }
$estAdmin = $this->utilisateur_gateway->getEstAdminByEmail($_REQUEST['email']); $estAdmin = $this->utilisateur_gateway->getEstAdminByEmail($email);
if ($estAdmin == true) { if ($estAdmin == true) {
$_SESSION['role'] = "admin"; $_SESSION['role'] = "admin";
} else { } else {

Loading…
Cancel
Save