You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Scripted/WEB/Model/VisitorModel.php

118 lines
4.1 KiB

<?php
class VisitorModel
{
private int $enigme_gateway;
private int $partie_gateway;
private int $utilisateur_gateway;
function __construct()
{
try {
echo 'model1';
global $error, $view, $rep;
$this->enigme_gateway = new EnigmeGateway();
$this->partie_gateway = new PartieGateway();
$this->utilisateur_gateway = new UtilisateurGateway();
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $view['erreur']);
}
}
public function signUp()
{
global $rep, $vues, $sel, $error;
try {
$validation = new Validation();
if (!$validation->ValidateEmail($_REQUEST['email'])) {
$error = "Email invalides.";
throw (new Exception("Email non valide"));
}
if (!$validation->ValidateUsername($_REQUEST['username'])) {
$error = "Nom d'utilisateur invalides. Il ne doit pas contenir de caractère spéciaux.";
throw (new Exception("Pseudo non valide"));
}
if (!$validation->ValidatePassword($_REQUEST['password'])) {
$error = "Mots de passe invalides. Il ne doit pas dépasser 100 caractères.";
throw (new Exception("Mot de passe non valide"));
}
$j = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']);
if ($j->getEmail() != "null") {
$error = "Email déjà utilisé.";
throw (new Exception("Email déjà utilisé"));
}
$password = password_hash($_REQUEST['password'] . $sel, PASSWORD_DEFAULT);
$utilisateur = new Utilisateur($_REQUEST['email'], $_REQUEST['username'], $password, false);
$this->utilisateur_gateway->insert($utilisateur);
$_SESSION['role'] = 'user';
$_SESSION['utilisateur'] = $utilisateur;
require($rep . $vues['main']);
} catch (PDOException $e) {
$error = "Erreur de connexion à la base de données.";
require($rep . $vues['erreur']);
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
}
public function login()
{
global $rep, $vues, $sel, $error;
try {
$utilisateur = $this->utilisateur_gateway->getUtilisateurByEmail($_REQUEST['email']);
if ($utilisateur->getEmail() == "null") {
$error = "Utilisateur non trouvé.";
throw new Exception("Utilisateur introuvable");
}
$mdp = $this->utilisateur_gateway->getMdpByEmail($_REQUEST['email']);
if (password_verify($mdp, $_REQUEST['password'] . $sel)) {
$error = "Mot de passe incorrect.";
throw new Exception("Mot de passe invalide");
}
$estAdmin = $this->utilisateur_gateway->getEstAdminByEmail($_REQUEST['email']);
if ($estAdmin == true) {
$_SESSION['role'] = "admin";
} else {
$_SESSION['role'] = "user";
}
$_SESSION['utilisateur'] = $utilisateur;
$_SESSION['connected'] = 'true';
require($rep . $vues['main']);
} catch (Exception $e) {
require($rep . $vues['erreur']);
}
}
public function goToHome()
{
global $rep, $vues, $error;
try {
require($rep . $vues['main']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToLogin()
{
global $rep, $vues, $error;
try {
require($rep . $vues['login']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
public function goToSignUp()
{
global $rep, $vues, $error;
try {
require($rep . $vues['signUp']);
} catch (Exception $e) {
$error = "404";
require($rep . $vues['erreur']);
}
}
}