Merge branch 'inscription-connection'

merge de inscription/connexion
offres2
Leo Tuaillon 1 year ago
commit e9afe5fbb0

@ -2,9 +2,7 @@
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/php/config" isTestSource="false" packagePrefix="config\" />
<sourceFolder url="file://$MODULE_DIR$/php/controleur" isTestSource="false" packagePrefix="controleur\" />
<sourceFolder url="file://$MODULE_DIR$/php/modeles" isTestSource="false" packagePrefix="modeles\" />
<sourceFolder url="file://$MODULE_DIR$/php/src" isTestSource="false" packagePrefix="App\" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

@ -0,0 +1,102 @@
.three-body {
--uib-size: 500px;
--uib-speed: 0.8s;
--uib-color: #00DBFF;
position: relative;
display: inline-block;
height: var(--uib-size);
width: var(--uib-size);
animation: spin78236 calc(var(--uib-speed) * 2.5) infinite linear;
}
.three-body__dot {
position: absolute;
height: 100%;
width: 30%;
}
.three-body__dot:after {
content: '';
position: absolute;
height: 0;
width: 100%;
padding-bottom: 100%;
background-color: var(--uib-color);
border-radius: 50%;
}
.three-body__dot:nth-child(1) {
bottom: 5%;
left: 0;
transform: rotate(60deg);
transform-origin: 50% 85%;
}
.three-body__dot:nth-child(1)::after {
bottom: 0;
left: 0;
animation: wobble1 var(--uib-speed) infinite ease-in-out;
animation-delay: calc(var(--uib-speed) * -0.3);
}
.three-body__dot:nth-child(2) {
bottom: 5%;
right: 0;
transform: rotate(-60deg);
transform-origin: 50% 85%;
}
.three-body__dot:nth-child(2)::after {
bottom: 0;
left: 0;
animation: wobble1 var(--uib-speed) infinite
calc(var(--uib-speed) * -0.15) ease-in-out;
}
.three-body__dot:nth-child(3) {
bottom: -5%;
left: 0;
transform: translateX(116.666%);
}
.three-body__dot:nth-child(3)::after {
top: 0;
left: 0;
animation: wobble2 var(--uib-speed) infinite ease-in-out;
}
@keyframes spin78236 {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes wobble1 {
0%,
100% {
transform: translateY(0%) scale(1);
opacity: 1;
}
50% {
transform: translateY(-66%) scale(0.65);
opacity: 0.8;
}
}
@keyframes wobble2 {
0%,
100% {
transform: translateY(0%) scale(1);
opacity: 1;
}
50% {
transform: translateY(66%) scale(0.65);
opacity: 0.8;
}
}

@ -0,0 +1,145 @@
a {
text-decoration: none;
}
.navbar-container {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 2rem;
width: 100%;
height: 70px;
background: #fff;
color: #212121;
position: sticky;
top: 0;
left: 0;
z-index: 100;
}
.navbar-container .logo-container a {
font-size: 1.5rem;
font-weight: 500;
font-family: 'Kanit', sans-serif;
text-transform: uppercase;
cursor: pointer;
color: #212121;
max-height: 70px;
}
.navbar-container .nav-items {
display: flex;
align-items: center;
gap: 3rem;
list-style: none;
}
.navbar-container .nav-items .nav-link a {
color: #212121;
padding: 10px;
text-transform: uppercase;
transition: 0.2s;
}
.navbar-container .nav-items .nav-link:after {
content: '';
display: block;
border-top: 3px solid #00DBFF;
transform: scaleX(0);
transition: transform 250ms ease-in-out;
}
.navbar-container .nav-items .nav-link:hover:after {
transform: scaleX(0.8);
}
.navbar-container .nav-items .login-register {
display: flex;
flex-direction: row;
gap: 1rem;
}
.navbar-container .nav-items .login-register .button {
color: #00DBFF;
padding: 5px 20px;
text-transform: uppercase;
border-radius: 15px;
border: #fff 2px solid;
}
.navbar-container .nav-items .login-register .button2{
background: #00DBFF;
color: #fff;
border-radius: 15px;
}
.navbar-container .nav-items .login-register .button:hover {
border: #00DBFF 2px solid;
}
.navbar-container .nav-items .login-register .button2:hover {
border: #00A4FF 2px solid;
}
@media(max-width: 1030px) {
.navbar-container {
padding: 0 1rem;
}
.navbar-container .nav-items {
gap: 0.1rem;
}
.navbar-container .nav-items .nav-link a,
.navbar-container .nav-items .login-register .button {
font-size: 0.9rem;
}
}
@media(max-width: 915px) {
.navbar-container .nav-items {
flex-direction: column;
position: fixed;
top: 70px;
right: -100%;
width: 100vw;
height: 100vh;
padding: 1rem 0;
z-index: 99;
background: #fff;
transition: 0.2s ease-in;
}
.bars {
width: 22px;
height: auto;
cursor: pointer;
}
.bars .bar {
width: 100%;
height: 2px;
background: #212121;
margin: 5px;
}
.navbar-container .nav-items {
gap: 3rem;
}
.navbar-container .nav-items .login-register {
width: 50%;
text-align: center;
flex-direction: column;
gap: 2rem;
}
.navbar-container .nav-items .login-register .button {
padding: 1rem 0;
}
}
.navbar-container .nav-items.active {
right: 0;
}

@ -12,5 +12,6 @@ $twig = new \Twig\Environment($loader, [
'cache' => false,
'debug' => true
]);
$twig->addExtension(new \Twig\Extension\DebugExtension());
$cont = new \App\controleur\FrontControleur();
//end session

@ -7,6 +7,6 @@ $rep = __DIR__ . '/php/';
$dConfig['includes']= array('controleur/Validation.php');
//BD
$base = 'mysql:host=localhost;dbname=dbAlica';
$login = 'root';
$mdp = '';
define('DB_HOST', 'mysql:host=localhost;dbname=dbAlica');
define('DB_USER', 'Dev');
define('DB_PASS', 'Dev');

@ -16,10 +16,10 @@ class FrontControleur
//TODO
],
"Membre" => [
"deconnexion","proposerOffre","consulterProfil","modifierProfil","signaler"
"deconnexion","proposerOffre","consulterProfil","modifierProfil","signaler",
],
"Utilisateur" => [
"connection", "inscription", "accueil","consulterProfilLimite"
"connexion", "inscription", "accueil","consulterProfilLimite"
]
);
@ -41,7 +41,7 @@ class FrontControleur
}
}
else if(in_array($action,$actions['Membre'])) {
if (!isset($_SESSION["login"])) {
if (!isset($_SESSION["utilisateur"])) {
$dVueErreur[] = 'Veuillez vous connecter';
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
} else{

@ -34,7 +34,9 @@ class MembreControleur extends UtilisateurControleur
protected function deconnexion()
{
//TODO
session_destroy();
header('Location: index.php?action=accueil');
exit();
}
protected function proposerOffre()

@ -17,17 +17,21 @@ class UtilisateurControleur
case "accueil":
$this->accueil();
break;
case "inscription_success":
$this->inscription_success();
break;
case "connection":
$this->connection();
break;
case "inscription":
$this->inscription();
break;
case "consulterProfilLimite":
$this->consulterProfilLimite();
break;
default:
$dVueErreur[] ="Action inconnue ou non autorisée";
$dVueErreur[] ="Action non autorisée";
echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]);
}
@ -36,49 +40,79 @@ class UtilisateurControleur
protected function connection()
{
global $twig;
echo $twig->render('connexion.html', []);
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
$userModel = new \App\modele\UtilisateurModele();
if (isset($_POST['email'], $_POST['password'])) {
$email = \App\config\Validation::nettoyerString($_POST['email']);
$motDePasse = \App\config\Validation::nettoyerString($_POST['password']);
$utilisateur = $userModel->connection($email, $motDePasse);
if ($utilisateur instanceof \App\metier\Alumni) {
$_SESSION['utilisateur'] = $utilisateur;
header('Location: index.php?action=accueil');
exit();
} else {
$dVueErreur[] = "L'adresse email ou le mot de passe est incorrect.";
}
}
echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]);
}
protected function inscription()
{
global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
$userModel = new \App\modele\UtilisateurModele();
if (isset($_POST['email'], $_POST['username'], $_POST['password'])) {
if (isset($_POST['firstname'],$_POST['name'], $_POST['email'], $_POST['password'])) {
$nom = \App\config\Validation::nettoyerString($_POST['name']);
$prenom = \App\config\Validation::nettoyerString($_POST['firstname']);
$email = \App\config\Validation::nettoyerString($_POST['email']);
$motDePasse = \App\config\Validation::nettoyerString($_POST['password']);
$hash = password_hash($motDePasse, PASSWORD_DEFAULT);
// 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 \App\metier\Alumni) {
$dVueErreur[] = "L'adresse email est déjà utilisée.";
}
}
$nouvelUtilisateur = $userModel->inscription($prenom,$nom,$email, $hash);
// Validez les données d'inscription, par exemple, vérifiez si l'email est unique
// Vous pouvez également effectuer d'autres validations nécessaires
$userModel = new \App\modele\UtilisateurModele();
$nouvelUtilisateur = $userModel->inscription($email, $motDePasse);
// Si l'inscription a réussi, redirigez l'utilisateur vers une page de confirmation
// Vous pouvez également gérer les erreurs ici en cas d'échec de l'inscription
if ($nouvelUtilisateur instanceof \App\modele\Alumni) {
// L'inscription a réussi, redirigez l'utilisateur vers une page de confirmation
// par exemple :
if ($nouvelUtilisateur instanceof \App\metier\Alumni) {
header('Location: index.php?action=inscription_success');
exit();
} else {
// L'inscription a échoué, ajoutez un message d'erreur
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
}
}
// Affichez le formulaire d'inscription ou les erreurs le cas échéant
echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
}
protected function accueil()
{
global $twig;
echo $twig->render('accueil.html', []);
// Ajout d'un var_dump pour déboguer
if (isset($_SESSION['utilisateur']) && $_SESSION['utilisateur'] instanceof \App\metier\Alumni) {
$prenom = $_SESSION['utilisateur']->getPrenom();
$nom = $_SESSION['utilisateur']->getNom();
}
else{
$prenom = null;
$nom = null;
}
//aller sur la page d'accueil avec le nom et prenom de l'utilisateur
echo $twig->render('accueil.html', ['prenom' => $prenom, 'nom' => $nom]);
}
protected function inscription_success()
{
global $twig;
echo $twig->render('inscription_success.html');
}
protected function consulterProfilLimite()
{
//TODO

@ -64,14 +64,21 @@ class AlumniGateway
}
public function findByEmail(string $email){
$query='SELECT * FROM Alumni WHERE email=:e';
$query = 'SELECT Alumni.mail, Alumni.mdp, Alumni.role, Profil.nom, Profil.prenom
FROM Alumni
LEFT JOIN Profil ON Alumni.id = Profil.alumni
WHERE Alumni.mail = :e';
$this->con->executeQuery($query, array(
':e' => array($email, PDO::PARAM_STR),
));
$res = $this->con->getResults();
return new Alumni($res[0]['mail'],$res[0]['id'],$res[0]['mdp'],$res[0]['role']);
if (count($res) == 0) {
return null;
}
return new \App\metier\Alumni($res[0]['mail'], $res[0]['mdp'], $res[0]['role'], $res[0]['nom'], $res[0]['prenom']);
}
public function getAll(){
$query='SELECT * FROM Alumni';
$this->con->executeQuery($query);
@ -82,4 +89,14 @@ class AlumniGateway
}
return $array;
}
public function getID(string $email)
{
$query = 'SELECT id FROM Alumni WHERE mail=:e';
$this->con->executeQuery($query, array(
':e' => array($email, PDO::PARAM_STR),
));
$res = $this->con->getResults();
return $res[0]['id'];
}
}

@ -0,0 +1,26 @@
<?php
namespace App\gateway;
use PDO;
class ProfilGateway
{
private \App\gateway\Connection $con;
/**
* @param Connection $con
*/
public function __construct(\App\gateway\Connection $con)
{
$this->con = $con;
}
public function insert(int $alumni,string $nom, string $prenom, string $email)
{
$query = 'INSERT INTO Profil (alumni,nom, prenom,email) VALUES (:alumni,:nom, :prenom,:email)';
return $this->con->executeQuery($query, array(
':alumni' => array($alumni, PDO::PARAM_INT),
':nom' => array($nom, PDO::PARAM_STR),
':prenom' => array($prenom, PDO::PARAM_STR),
':email' => array($email, PDO::PARAM_STR)
));
}
}

@ -1,6 +1,6 @@
<?php
namespace App\modele;
namespace App\metier;
class Alumni{
/**
@ -18,16 +18,20 @@ class Alumni{
*/
private String $role;
private Profil $profil;
/**
* @param string $email
* @param string $motDePasse
* @param String $role
* @param Profil $profil
*/
public function __construct(string $email, string $motDePasse, String $role)
public function __construct(string $email, string $motDePasse, String $role, string $nom, string $prenom)
{
$this->email = $email;
$this->motDePasse = $motDePasse;
$this->role = $role;
$this->profil = new Profil($nom, $prenom, $email, "","", "", "");
}
/**
@ -38,6 +42,10 @@ class Alumni{
return $this->email;
}
public function getProfil() : Profil
{
return $this->profil;
}
/**
* @return string
*/
@ -50,4 +58,19 @@ class Alumni{
{
return $this->role;
}
public function getPassword(): string
{
return $this->motDePasse;
}
public function getPrenom()
{
return $this->profil->getPrenom();
}
public function getNom()
{
return $this->profil->getNom();
}
}

@ -1,5 +1,5 @@
<?php
namespace App\modele;
namespace App\metier;
class Article
{

@ -1,5 +1,5 @@
<?php
namespace App\modele;
namespace App\metier;
class Evenement
{

@ -1,5 +1,5 @@
<?php
namespace App\modele;
namespace App\metier;
class Experience
{

@ -1,5 +1,5 @@
<?php
namespace App\modele;
namespace App\metier;
class Formation
{

@ -1,5 +1,5 @@
<?php
namespace App\modele;
namespace App\metier;
enum TypeContrat
{

@ -1,5 +1,5 @@
<?php
namespace App\modele;
namespace App\metier;
class Profil
{
@ -8,10 +8,6 @@ class Profil
*/
private int $id;
/**
* @var Alumni Compte
*/
private Alumni $alumni;
/**
* @var string CV
@ -28,6 +24,7 @@ class Profil
*/
private string $prenom;
private string $email;
/**
* @var string Url linkedin
*/
@ -44,8 +41,6 @@ class Profil
private string $portfolioUrl;
/**
* @param int $id
* @param Alumni $alumni
* @param string $cv
* @param string $nom
* @param string $prenom
@ -53,27 +48,18 @@ class Profil
* @param string $githubUrl
* @param string $portfolioUrl
*/
public function __construct(int $id, Alumni $alumni, string $cv, string $nom, string $prenom, string $linkedinUrl, string $githubUrl, string $portfolioUrl)
public function __construct(string $nom, string $prenom, string $email, string $cv, string $linkedinUrl, string $githubUrl, string $portfolioUrl)
{
$this->id = $id;
$this->alumni = $alumni;
$this->cv = $cv;
$this->nom = $nom;
$this->prenom = $prenom;
$this->email = $email;
$this->cv = $cv;
$this->linkedinUrl = $linkedinUrl;
$this->githubUrl = $githubUrl;
$this->portfolioUrl = $portfolioUrl;
}
public function getId(): int
{
return $this->id;
}
public function getAlumni(): Alumni
{
return $this->alumni;
}
public function getCv(): string
{
@ -100,6 +86,10 @@ class Profil
return $this->githubUrl;
}
public function getEmail(): string
{
return $this->email;
}
public function getPortfolioUrl(): string
{
return $this->portfolioUrl;

@ -1,5 +1,5 @@
<?php
namespace App\modele;
namespace App\metier;
enum Role
{
case Admin;

@ -2,13 +2,15 @@
namespace App\modele;
use App\metier\Alumni;
class AdminModele extends MembreModele
{
/**
* @description supprimer un compte
* @param Alumni $account compte à supprimer
*/
public function deleteAccount(\App\modele\Alumni $account)
public function deleteAccount(\App\metier\Alumni $account)
{
// TO DO
}

@ -16,12 +16,32 @@ class UtilisateurModele
* @description se connecter
* @param string email
* @param string hash
* @return \App\modele\Alumni
* @return \App\metier\Alumni
*/
public function Login(string $email,string $hash) : \App\modele\Alumni
public function connection(string $email, string $mdp) : ? \App\metier\Alumni
{
// TO DO
return new \App\modele\Alumni(null,null,null);
$dsn = "mysql:host=localhost;dbname=dbAlica";
$username = "Dev";
$password = "Dev";
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\AlumniGateway($con);
// Récupérez l'utilisateur avec l'email donné en utilisant AlumniGateway
$utilisateur = $gate->findByEmail($email);
if ($utilisateur instanceof \App\metier\Alumni) {
// L'utilisateur existe, vérifiez le mot de passe
if (password_verify($mdp, $utilisateur->getPassword())) {
// Le mot de passe est correct, retournez l'utilisateur
session_start();
return $utilisateur;
} else {
// Le mot de passe est incorrect, renvoyez null
return null;
}
} else {
// L'utilisateur n'existe pas, renvoyez null
return null;
}
}
/**
@ -31,23 +51,47 @@ class UtilisateurModele
* @param string $pseudo
* @return \Alumni chargé
*/
public function inscription(string $email, string $hashpassword): \App\modele\Alumni
public function inscription(string $prenom, string $nom,string $email, string $hashpassword):? \App\metier\Alumni
{
$dsn = "mysql:host=localhost;dbname=dbAlica";
$username = "Dev";
$password = "Dev";
$role = "Utilisateur";
$role = "Membre";
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\AlumniGateway($con);
$profilGate = new \App\gateway\ProfilGateway($con);
// Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway
if ($gate->insert($email, $hashpassword, $role)) {
$alumni = $gate->getID($email);
if($profilGate->insert($alumni,$nom, $prenom,$email)){
// L'insertion a réussi, retournez le nouvel utilisateur
$nouvelUtilisateur = new \App\modele\Alumni($email, $hashpassword, $role);
$nouvelUtilisateur = new \App\metier\Alumni($email, $hashpassword, $role,$nom,$prenom);
return $nouvelUtilisateur;
}
return null;
} else {
// L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec
return new \App\modele\Alumni(null, null, null);
return null;
}
}
public function getUtilisateurByEmail(string $email)
{
$dsn = "mysql:host=localhost;dbname=dbAlica";
$username = "Dev";
$password = "Dev";
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\AlumniGateway($con);
// Récupérez l'utilisateur avec l'email donné en utilisant AlumniGateway
$utilisateur = $gate->findByEmail($email);
if ($utilisateur instanceof \App\metier\Alumni) {
// L'utilisateur existe, retournez-le
return $utilisateur;
} else {
// L'utilisateur n'existe pas, renvoyez null
return null;
}
}
}

@ -9,16 +9,33 @@
<body>
<header>
{% include 'menu.html' %}
</header>
<h1>Accueil</h1>
<!-- Bienvenu suivie du mail des informations sessions de l'utilisateur -->
<p>{% if prenom and nom %}
Bienvenue, {{ prenom }} {{ nom }}!
{% else %}
Bienvenue, invité!
{% endif %}</p>
<p>Vous êtes sur la page d'accueil</p>
<p>Vous pouvez vous connecter ou vous inscrire</p>
<p>Vous pouvez aussi consulter les articles</p>
<p>Vous pouvez aussi consulter les annonces</p>
<p>Connexion :</p>
<form action="../public/index.php?action=connection" method="POST">
<input type="submit" value="Se connecter">
</form>
{% if dVueErreur is not empty %}
<div class="CadreInput">
<div class="box">
<div class="error">
<ul>
{% for erreur in dVueErreur %}
<li>{{ erreur }}</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endif %}
</body>
</html>

@ -16,7 +16,7 @@
<div class="icon">
<ion-icon name="person"></ion-icon>
</div>
<input type="text" name="username" required>
<input type="text" name="email" required>
</div>
</div>
<div class="CadreInput">
@ -35,6 +35,7 @@
</div>
</div>
</form>
<div class="CadreInput">
<div class="box">
<form action="../public/index.php?action=inscription" method="POST">
@ -42,6 +43,19 @@
</form>
</div>
</div>
{% if dVueErreur is not empty %}
<div class="CadreInput">
<div class="box">
<div class="error">
<ul>
{% for erreur in dVueErreur %}
<li>{{ erreur }}</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endif %}
</div>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>

@ -11,12 +11,25 @@
<form action="" method="POST">
<h3>S'inscrire</h3>
<div class="CadreInput">
<span>Identifiant</span>
<span>Prénom :</span>
<div class="box">
<div class="icon">
<ion-icon name="person"></ion-icon>
</div>
<input type="text" name="username" required>
<label>
<input type="text" name="firstname" required>
</label>
</div>
</div>
<div class="CadreInput">
<span>Nom :</span>
<div class="box">
<div class="icon">
<ion-icon name="person"></ion-icon>
</div>
<label>
<input type="text" name="name" required>
</label>
</div>
</div>
<div class="CadreInput">
@ -25,7 +38,9 @@
<div class="icon">
<ion-icon name="mail-outline"></ion-icon>
</div>
<label>
<input type="email" name="email" required>
</label>
</div>
</div>
<div class="CadreInput">
@ -34,7 +49,9 @@
<div class="icon">
<ion-icon name="lock-closed"></ion-icon>
</div>
<label>
<input type="password" name="password" required>
</label>
</div>
</div>
<div class="CadreInput">
@ -50,6 +67,19 @@
</form>
</div>
</div>
{% if dVueErreur is not empty %}
<div class="CadreInput">
<div class="box">
<div class="error">
<ul>
{% for erreur in dVueErreur %}
<li>{{ erreur }}</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endif %}
</div>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
<script noModule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Success</title>
<link rel="stylesheet" type="text/css" href="../public/css/inscription_success.css">
</head>
<body>
<h1>Inscription effectuée avec succès, vous pouvez désormais vous connecter</h1>
<p>Vous allez être redirigé vers la page de connexion dans 5 secondes</p>
<div class="three-body">
<div class="three-body__dot"></div>
<div class="three-body__dot"></div>
<div class="three-body__dot"></div>
</div>
<script>
setTimeout(function () {
window.location.href = "../public/index.php?action=connection";
}, 5000);
</script>
</body>
</html>

@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" type="text/css" href="../public/css/menu.css">
<title></title>
</head>
<nav class="navbar-container">
<div class="logo-container">
<a href="index.php">
<img src="assets/logo.png" alt="Logo" height="70px">
</a>
</div>
<div class="bars">
<div class="bar"></div>
<div class="bar"></div>
<div class="bar"></div>
</div>
<ul class="nav-items">
<li class="nav-link"><a href="#">A propos</a></li>
<li class="nav-link"><a href="#">Evenements</a></li>
<li class="nav-link"><a href="#">Offres</a></li>
<li class="nav-link"><a href="#">Nous contacter</a></li>
</ul>
<ul class="nav-items">
<!-- Afficher boutons de connexion et d'inscription -->
{% if nom and prenom %}
<!-- Afficher bouton de déconnexion -->
<a href="index.php?action=deconnexion" class="button">Déconnexion</a>
{% else %}
<div class="login-register">
<a href="index.php?action=connection" class="button">Connexion</a>
<a href="index.php?action=inscription" class="button button2">Inscription</a>
</div>
{% endif %}
</ul>
</nav>
</html>
Loading…
Cancel
Save