ajout quelque commentaire
Some checks failed
Deploy production (servyass) / deploy (push) Has been cancelled

This commit is contained in:
Yasder5 2026-03-01 12:57:28 +01:00
parent 18d74fc687
commit 8b094379ca
6 changed files with 46 additions and 9 deletions

View file

@ -15,7 +15,9 @@
*/ */
class AdminCtrl extends MotherCtrl{ class AdminCtrl extends MotherCtrl{
/**
* Page Admin
*/
public function admin(){ public function admin(){
if (!isset($_SESSION['user']) && ($_SESSION['user']['user_status'] != 1 )){ if (!isset($_SESSION['user']) && ($_SESSION['user']['user_status'] != 1 )){

View file

@ -4,7 +4,7 @@
use Smarty\Smarty; use Smarty\Smarty;
/** /**
* Le controller de la partie accessible uniquement par l'admin * Controller Mère qui permet de gèrer l'affichage des pages
* @author Yasser * @author Yasser
*/ */
@ -14,6 +14,9 @@
/** /**
* Méthode d'affichage des pages * Méthode d'affichage des pages
* @param string $strView Le fichier a afficher
* @param bool $boolDisplay Booléen pour afficher web ou mail
* @return page|object affiche la page ou retourne l'objet pour le mail
*/ */
protected function _display($strView, bool $boolDisplay = true){ protected function _display($strView, bool $boolDisplay = true){

View file

@ -4,7 +4,7 @@
/** /**
* Le controller de la page d'aide utilisateur * Le controller des pages annexes
* @author Laura & Besnik * @author Laura & Besnik
*/ */

View file

@ -38,15 +38,12 @@
$hash_a_verifier = hash('sha256', $token_du_cookie); $hash_a_verifier = hash('sha256', $token_du_cookie);
$objUserModel = new UserModel; $objUserModel = new UserModel;
// 2. On cherche le jeton dans TA table "tokens" (avec token_user_id)
$row = $objUserModel->getTokenUser($hash_a_verifier); $row = $objUserModel->getTokenUser($hash_a_verifier);
if ($row) { if ($row) {
// 3. Jeton trouvé ! On récupère les infos de l'utilisateur
$user = $objUserModel->findUserById($row['token_user_id']); $user = $objUserModel->findUserById($row['token_user_id']);
if ($user) { if ($user) {
// 4. On recrée la session comme lors d'un login normal
$_SESSION['user'] = $user; $_SESSION['user'] = $user;
} }
} }

View file

@ -14,7 +14,9 @@
*/ */
class UserCtrl extends MotherCtrl { class UserCtrl extends MotherCtrl {
/**
* Page Login
*/
public function login(){ public function login(){
$strMail = $_POST['user_mail']??""; $strMail = $_POST['user_mail']??"";
@ -56,7 +58,9 @@ class UserCtrl extends MotherCtrl {
} }
/**
* Fonction pour ce déconnecter
*/
public function logout(){ public function logout(){
if (isset($_COOKIE['remember_me'])) { if (isset($_COOKIE['remember_me'])) {

View file

@ -73,6 +73,12 @@
return $rqPrep->execute(); return $rqPrep->execute();
} }
/**
* Méthode pour sauvegarder l'utilisateur lorsqu'il veut être souvenue
* @param int $userId l'id de l'utilisateur a se rappeler
* @param string $token Token hashé unique lié à l'utilisateur à se rappeler
* @return bool Est-ce que la requête s'est bien passée
*/
public function remember(int $userId, string $token):bool{ public function remember(int $userId, string $token):bool{
$strRq = "INSERT INTO tokens (token_user_id, token_hash, token_created_at, token_expire_at) VALUES (:id, :token, NOW(), :exp)"; $strRq = "INSERT INTO tokens (token_user_id, token_hash, token_created_at, token_expire_at) VALUES (:id, :token, NOW(), :exp)";
$rqPrep = $this->_db->prepare($strRq); $rqPrep = $this->_db->prepare($strRq);
@ -84,6 +90,11 @@
return $rqPrep->execute(); return $rqPrep->execute();
} }
/**
* Méthode pour récupperer l'utilisateur par rapport au cookie enregistrer
* @param string $hash Token hashé unique lié à l'utilisateur
* @return bool Est-ce que la requête s'est bien passée
*/
public function getTokenUser(string $hash){ public function getTokenUser(string $hash){
$strRq = $this->_db->prepare("SELECT token_user_id FROM tokens WHERE token_hash = :hash AND token_expire_at > NOW()"); $strRq = $this->_db->prepare("SELECT token_user_id FROM tokens WHERE token_hash = :hash AND token_expire_at > NOW()");
@ -91,12 +102,22 @@
return $strRq->fetch(); return $strRq->fetch();
} }
/**
* Méthode pour supprimer le token lors de la déconnexion
* @param string $hash Token hashé unique lié à l'utilisateur
* @return bool Est-ce que la requête s'est bien passée
*/
public function deleteToken(string $hash){ public function deleteToken(string $hash){
$strRq = $this->_db->prepare("DELETE FROM tokens WHERE token_hash = :hash"); $strRq = $this->_db->prepare("DELETE FROM tokens WHERE token_hash = :hash");
return $strRq->execute(['hash' => $hash]); return $strRq->execute(['hash' => $hash]);
} }
/**
* Méthode pour mettre a jour l'utilisateur
* @param object $objUser L'objet user a mettre à jour
* @return bool Est-ce que la requête s'est bien passée
*/
public function update(object $objUser):bool{ public function update(object $objUser):bool{
$strRq = "UPDATE users SET $strRq = "UPDATE users SET
user_name = :name, user_name = :name,
@ -194,6 +215,11 @@
return $prep->fetch(); return $prep->fetch();
} }
/**
* Récupère les informations d'un utilisateur par son ID
* @param string $strPseudo Pseudo de l'utilisateur
* @return array Tableau associatif (ou false si pas trouvé)
*/
public function findUserByPseudo(string $strPseudo): array|bool { public function findUserByPseudo(string $strPseudo): array|bool {
$strRq = "SELECT user_id,user_image, user_status ,user_name, user_firstname, user_pseudo, user_mail, user_phone, user_work, user_location, user_description, authorisation_name $strRq = "SELECT user_id,user_image, user_status ,user_name, user_firstname, user_pseudo, user_mail, user_phone, user_work, user_location, user_description, authorisation_name
@ -207,6 +233,11 @@
return $prep->fetch(); return $prep->fetch();
} }
/**
* Verifie sur le pseudo entré n'est pas déjà utilisé
* @param string $pseudo Pseudo a verifié
* @return array Tableau associatif (ou false si pas trouvé)
*/
public function pseudoExists(string $pseudo): bool{ public function pseudoExists(string $pseudo): bool{
$rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_pseudo = :pseudo LIMIT 1"); $rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_pseudo = :pseudo LIMIT 1");