affichage des profils + réglage du problème de connection

AffichageProfil
Leo TUAILLON 1 year ago
parent 4ee484b938
commit bc1f77c054

@ -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;
}

@ -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');

@ -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,7 +50,7 @@ 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.";
@ -62,12 +60,14 @@ class UtilisateurControleur
$dVueErreur[] = "L'adresse email est déjà utilisée.";
}
}
$nouvelUtilisateur = $userModel->inscription($prenom,$nom,$email, $hash);
$nouvelUtilisateur = $userModel->inscription($prenom, $nom, $email, $hash);
if ($nouvelUtilisateur instanceof Alumni) {
echo $twig->render('inscription_success.html');
exit();
} else {
}
}
catch (Exception $e) {
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
}
}
@ -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']);
try{
$profils = $userModel->getProfilByPage($page, $nbParPage);
if ($profils[0] != null) {
if (isset($profils)) {
echo $twig->render('profil.html', [
'profils' => $profils,
'nombreTotalPages' => $nombreTotalPages,
'page' => $page]
);
} else {
$dVueErreur[] = "L'utilisateur n'existe pas.";
}
}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]);
}
}

@ -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) {

@ -21,6 +21,7 @@
<li class="nav-link"><a href="{{dir}}/consultOffers">Offres</a></li>
<li class="nav-link"><a href="#">Nous contacter</a></li>
<li class="nav-link"><a href="{{dir}}/getProfilByPage/1">Les Alumnis</a></li>
</ul>
<ul class="nav-items">
<!-- Afficher boutons de connexion et d'inscription -->

@ -4,38 +4,67 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Profils des Alumnis</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="{{ dir }}/public/css/profil.css">
</head>
<body>
<header>
{% include "menu.html" %}
</header>
<h1>Les Alumnis :</h1>
<div class="profiles-container">
<h1 class="text-center my-4">Les Alumnis :</h1>
<div class="container">
<div class="row justify-content-center">
<div class="col-12 col-md-8">
<div class="profiles-container">
{% for profil in profils %}
<div class="profile">
<div class="profile d-flex">
<div class="profile-image-container">
<img src="{{ dir }}/public/assets/{{ profil.image ?: 'default.png' }}" alt="Image de profil">
</div>
<div class="profile-details">
<p>{{ profil.prenom }} {{ profil.nom }}</p>
<a href="{{ 'voir_profil.php?id=' ~ profil.id }}">Voir le profil</a>
<p class="job-title">Développeur web chez CGI FRANCE</p>
<a href="{{ 'voir_profil.php?id=' ~ profil.id }}" class="btn btn-primary">Voir le détail du profil</a>
{% if user.role == 'admin' %}
<a href="{{ 'bloquer_profil.php?id=' ~ profil.id }}" class="btn btn-danger">Bannir l'utilisateur</a>
{% endif %}
</div>
</div>
{% else %}
<p>Aucun profil trouvé.</p>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="pagination">
{% if page > 1 %}
<a href="{{ dir }}/getProfilByPage/{{ page - 1 }}">Précédente</a>
{% endif %}
<span>{{ page }}</span>
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-center">
<li class="page-item {% if page <= 1 %}disabled{% endif %}">
<a class="page-link" href="{{ dir }}/getProfilByPage/{{ page - 1 }}" tabindex="-1">Précédente</a>
</li>
{% for i in 1..nombreTotalPages %}
<li class="page-item {% if page == i %}active{% endif %}">
<a class="page-link" href="{{ dir }}/getProfilByPage/{{ i }}">{{ i }}</a>
</li>
{% endfor %}
{% if page < nombreTotalPages %}
<a href="{{ dir }}/getProfilByPage/{{ page + 1 }}">Suivante</a>
<li class="page-item">
<a class="page-link" href="{{ dir }}/getProfilByPage/{{ page + 1 }}">Suivante</a>
</li>
{% else %}
<li class="page-item disabled">
<a class="page-link" href="#">Suivante</a>
</li>
{% endif %}
</div>
</ul>
</nav>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</body>
</html>

Loading…
Cancel
Save