From bc1f77c054e72f93b63396ef79d9431713226787 Mon Sep 17 00:00:00 2001 From: tleodev Date: Sun, 19 Nov 2023 19:09:09 +0100 Subject: [PATCH] =?UTF-8?q?affichage=20des=20profils=20+=20r=C3=A9glage=20?= =?UTF-8?q?du=20probl=C3=A8me=20de=20connection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- php/public/css/profil.css | 81 ++++++++++++++++---- php/src/controleur/FrontControleur.php | 7 +- php/src/controleur/UtilisateurControleur.php | 80 +++++++++---------- php/src/modele/UtilisateurModele.php | 2 +- php/templates/menu.html | 1 + php/templates/profil.html | 75 ++++++++++++------ 6 files changed, 165 insertions(+), 81 deletions(-) diff --git a/php/public/css/profil.css b/php/public/css/profil.css index 89d38af..f8603eb 100644 --- a/php/public/css/profil.css +++ b/php/public/css/profil.css @@ -1,4 +1,4 @@ -/* styles.css */ +/* profil.css */ .profiles-container { display: flex; flex-wrap: wrap; @@ -9,61 +9,114 @@ } .profile { - width: calc(33.333% - 20px); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + width: calc(50% - 20px); /* Ajustez la largeur si nécessaire pour correspondre au design */ + border: 1px solid #ccc; /* Bordure comme dans l'image */ border-radius: 10px; overflow: hidden; background: #fff; margin-bottom: 20px; + display: flex; + align-items: center; /* Alignement vertical */ } .profile-image-container { padding: 10px; + display: flex; + align-items: center; + justify-content: center; background: #f0f0f0; + flex-shrink: 0; /* Empêche le conteneur de rétrécir */ } .profile-image-container img { width: 100px; height: 100px; border-radius: 50%; - display: block; - margin: auto; } .profile-details { padding: 10px; - text-align: center; + flex-grow: 1; /* Permet à ce div de prendre l'espace restant */ } .profile-details p { margin: 5px 0; + font-weight: bold; /* Texte en gras comme dans l'image */ +} + +.profile-details .job-title { + color: #007bff; + font-size: 0.85em; } .profile-details a { - display: inline-block; + display: block; /* Prend toute la largeur du conteneur */ background: #007bff; color: #fff; padding: 5px 15px; text-decoration: none; border-radius: 5px; font-size: 14px; + margin-top: 10px; /* Espace au-dessus du lien */ + text-align: center; /* Centre le texte dans le lien */ } .profile-details a:hover { background: #0056b3; } + + +/* profil.css */ .pagination { - text-align: center; - margin-top: 20px; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; } -.pagination a { - margin: 0 5px; +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #007bff; + background-color: #fff; + border: 1px solid #dee2e6; +} + +.page-link:hover { + color: #0056b3; text-decoration: none; - color: #333; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; } -.pagination a:hover { - text-decoration: underline; +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; } + + diff --git a/php/src/controleur/FrontControleur.php b/php/src/controleur/FrontControleur.php index 93134a4..f93cbff 100755 --- a/php/src/controleur/FrontControleur.php +++ b/php/src/controleur/FrontControleur.php @@ -18,7 +18,12 @@ class FrontControleur global $twig; session_start(); - + if($_SESSION["utilisateur"]){ + $twig->addGlobal('nom', $_SESSION["utilisateur"]->getNom()); + $twig->addGlobal('prenom', $_SESSION["utilisateur"]->getPrenom()); + $twig->addGlobal('role', $_SESSION["utilisateur"]->getRole()); + $twig->addGlobal('id', $_SESSION["utilisateur"]->getId()); + } $router = new AltoRouter(); $router->setBasePath('/SAE_2A_FA-Reseau_ALICA/php'); diff --git a/php/src/controleur/UtilisateurControleur.php b/php/src/controleur/UtilisateurControleur.php index dd23678..e99a20d 100755 --- a/php/src/controleur/UtilisateurControleur.php +++ b/php/src/controleur/UtilisateurControleur.php @@ -7,6 +7,7 @@ use App\gateway\ImageSaver; use App\metier\Alumni; use App\modele\OffreModele; use App\modele\UtilisateurModele; +use Exception; class UtilisateurControleur { @@ -27,15 +28,12 @@ class UtilisateurControleur if ($utilisateur instanceof Alumni) { $_SESSION['utilisateur'] = $utilisateur; - // Afficher une autre page via Twig - echo $twig->render('accueil.html', ['prenom' => $utilisateur->getPrenom(), 'nom' => $utilisateur->getNom()]); + echo $twig->render('accueil.html'); return; } else { $dVueErreur[] = "L'adresse email ou le mot de passe est incorrect."; } } - - // Afficher la page de connexion avec les erreurs, le cas échéant echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]); } @@ -43,7 +41,7 @@ class UtilisateurControleur { global $twig; - $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant + $dVueErreur = []; $userModel = new UtilisateurModele(); if (isset($_POST['firstname'],$_POST['name'], $_POST['email'], $_POST['password'])) { @@ -52,23 +50,25 @@ class UtilisateurControleur $email = Validation::nettoyerString($_POST['email']); $motDePasse = Validation::nettoyerString($_POST['password']); $hash = password_hash($motDePasse, PASSWORD_DEFAULT); + try { + // verification que l'email est valide et unique : + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + $dVueErreur[] = "L'adresse email n'est pas valide ou est déjà utilisée."; + } else { + $utilisateur = $userModel->getUtilisateurByEmail($email); + if ($utilisateur instanceof Alumni) { + $dVueErreur[] = "L'adresse email est déjà utilisée."; + } + } + $nouvelUtilisateur = $userModel->inscription($prenom, $nom, $email, $hash); - // verification que l'email est valide et unique : - if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { - $dVueErreur[] = "L'adresse email n'est pas valide ou est déjà utilisée."; - } else { - $utilisateur = $userModel->getUtilisateurByEmail($email); - if ($utilisateur instanceof Alumni) { - $dVueErreur[] = "L'adresse email est déjà utilisée."; + if ($nouvelUtilisateur instanceof Alumni) { + echo $twig->render('inscription_success.html'); + exit(); } } - $nouvelUtilisateur = $userModel->inscription($prenom,$nom,$email, $hash); - - if ($nouvelUtilisateur instanceof Alumni) { - echo $twig->render('inscription_success.html'); - exit(); - } else { - $dVueErreur[] = "L'inscription a échoué, veuillez réessayer."; + catch (Exception $e) { + $dVueErreur[] = "L'inscription a échoué, veuillez réessayer."; } } echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]); @@ -79,19 +79,13 @@ class UtilisateurControleur global $twig; // Ajout d'un var_dump pour déboguer if (isset($_SESSION['utilisateur']) && $_SESSION['utilisateur'] instanceof Alumni) { - $prenom = $_SESSION['utilisateur']->getPrenom(); - $nom = $_SESSION['utilisateur']->getNom(); - $id = $_SESSION['utilisateur']->getId(); - } - else{ - $prenom = null; - $nom = null; - $id = null; - } $userModel = new UtilisateurModele(); $evenements=$userModel->getEvenement(); //aller sur la page d'accueil avec le nom et prenom de l'utilisateur - echo $twig->render('accueil.html', ['prenom' => $prenom, 'nom' => $nom, 'id' => $id,"eventsList"=>$evenements]); + echo $twig->render('accueil.html', ['evenements' => $evenements]); + } else { + echo $twig->render('accueil.html'); + } } public function consulterProfilLimite() @@ -354,27 +348,29 @@ class UtilisateurControleur public function getProfilByPage(?array $params) { + global $twig; $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant $userModel = new UtilisateurModele(); - $nbParPage = 5; - $nombreTotalPages = ($userModel->getNbTotalPages())/$nbParPage; + $nbParPage = 10; + $nombreTotalPages = ceil(($userModel->getNbTotalPages())/$nbParPage); if (isset($params['id'] ) && $params['id'] != null) { $page = Validation::validerIntPossitif($params['id']); - $profils = $userModel->getProfilByPage($page, $nbParPage); - - if ($profils[0] != null) { - echo $twig->render('profil.html', [ - 'profils' => $profils, - 'nombreTotalPages' => $nombreTotalPages, - 'page' => $page] - ); - } else { - $dVueErreur[] = "L'utilisateur n'existe pas."; + try{ + $profils = $userModel->getProfilByPage($page, $nbParPage); + if (isset($profils)) { + echo $twig->render('profil.html', [ + 'profils' => $profils, + 'nombreTotalPages' => $nombreTotalPages, + 'page' => $page] + ); + } + }catch (Exception $e){ + $dVueErreur[] = "Aucun profil n'a été trouvé."; echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]); } } else { - $dVueErreur[] = "L'utilisateur n'existe pas."; + $dVueErreur[] = "La page n'existe pas."; echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]); } } diff --git a/php/src/modele/UtilisateurModele.php b/php/src/modele/UtilisateurModele.php index 42c4659..022f7f2 100755 --- a/php/src/modele/UtilisateurModele.php +++ b/php/src/modele/UtilisateurModele.php @@ -191,7 +191,7 @@ class UtilisateurModele $con = new Connection(DB_HOST, DB_USER, DB_PASS); $gate = new ProfilGateway($con); $data = $gate->userByPage($page, $nbParPage); - if($data[0]!=null){ + if(isset($data)){ //Création d'une liste d'objets utilisateurs $profils = array(); foreach ($data as $row) { diff --git a/php/templates/menu.html b/php/templates/menu.html index 7e48b0e..a771142 100644 --- a/php/templates/menu.html +++ b/php/templates/menu.html @@ -21,6 +21,7 @@ +