diff --git a/.idea/alica.iml b/.idea/alica.iml old mode 100755 new mode 100644 index 9a8e33d..816484e --- a/.idea/alica.iml +++ b/.idea/alica.iml @@ -2,9 +2,7 @@ - - - + diff --git a/php/public/css/inscription_success.css b/php/public/css/inscription_success.css new file mode 100644 index 0000000..86fa52c --- /dev/null +++ b/php/public/css/inscription_success.css @@ -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; + } +} diff --git a/php/public/index.php b/php/public/index.php index 6158841..d0ad525 100755 --- a/php/public/index.php +++ b/php/public/index.php @@ -1,4 +1,4 @@ -accueil(); break; + case "inscription_success": + $this->inscription_success(); + break; case "connection": $this->connection(); break; @@ -28,7 +31,7 @@ class UtilisateurControleur $this->consulterProfilLimite(); break; default: - $dVueErreur[] ="Action rjhghuiergiuhou non autorisée"; + $dVueErreur[] ="Action non autorisée"; echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]); } @@ -59,22 +62,24 @@ class UtilisateurControleur { 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']); + // verification que l'email est valide et unique : if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { - $dVueErreur[] = "L'adresse email n'est pas valide."; + $dVueErreur[] = "L'adresse email n'est pas valide ou est déjà utilisée."; } else { - $userModel = new \App\modele\UtilisateurModele(); $utilisateur = $userModel->getUtilisateurByEmail($email); if ($utilisateur instanceof \App\metier\Alumni) { $dVueErreur[] = "L'adresse email est déjà utilisée."; } } - $userModel = new \App\modele\UtilisateurModele(); - $nouvelUtilisateur = $userModel->inscription($email, $motDePasse); + $nouvelUtilisateur = $userModel->inscription($prenom,$nom,$email, $motDePasse); if ($nouvelUtilisateur instanceof \App\metier\Alumni) { header('Location: index.php?action=inscription_success'); @@ -91,15 +96,21 @@ class UtilisateurControleur global $twig; // Ajout d'un var_dump pour déboguer if (isset($_SESSION['utilisateur']) && $_SESSION['utilisateur'] instanceof \App\metier\Alumni) { - $pseudo = $_SESSION['utilisateur']->getEmail(); // ou getPseudo() si la méthode existe + $prenom = $_SESSION['utilisateur']->getPrenom(); + $nom = $_SESSION['utilisateur']->getNom(); } else { - $pseudo = null; + $prenom = "Utilisateur"; + $nom = "inconnu"; } - - echo $twig->render('accueil.html', ['pseudo' => $pseudo]); + //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 diff --git a/php/src/gateway/AlumniGateway.php b/php/src/gateway/AlumniGateway.php index 59b9033..dbc4dee 100644 --- a/php/src/gateway/AlumniGateway.php +++ b/php/src/gateway/AlumniGateway.php @@ -64,20 +64,21 @@ class AlumniGateway } public function findByEmail(string $email){ - $query='SELECT * FROM Alumni WHERE mail=: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(); - var_dump($res); - if(count($res)==0){ - echo "Aucun utilisateur trouvé"; + $res = $this->con->getResults(); + if (count($res) == 0) { return null; } - echo "Utilisateur trouvé"; - return new \App\metier\Alumni($res[0]['mail'],$res[0]['mdp'],$res[0]['role']); + 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); @@ -88,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']; + } } \ No newline at end of file diff --git a/php/src/gateway/ProfilGateway.php b/php/src/gateway/ProfilGateway.php new file mode 100644 index 0000000..abee520 --- /dev/null +++ b/php/src/gateway/ProfilGateway.php @@ -0,0 +1,26 @@ +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) + )); + } +} \ No newline at end of file diff --git a/php/src/metier/Alumni.php b/php/src/metier/Alumni.php index d1ac2fe..3f25d43 100644 --- a/php/src/metier/Alumni.php +++ b/php/src/metier/Alumni.php @@ -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 */ @@ -55,4 +63,14 @@ class Alumni{ { return $this->motDePasse; } + + public function getPrenom() + { + return $this->profil->getPrenom(); + } + + public function getNom() + { + return $this->profil->getNom(); + } } \ No newline at end of file diff --git a/php/src/metier/Profil.php b/php/src/metier/Profil.php index cee762c..8fef2ee 100644 --- a/php/src/metier/Profil.php +++ b/php/src/metier/Profil.php @@ -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; diff --git a/php/src/modele/UtilisateurModele.php b/php/src/modele/UtilisateurModele.php index b4f7cff..9d2fd1d 100755 --- a/php/src/modele/UtilisateurModele.php +++ b/php/src/modele/UtilisateurModele.php @@ -51,7 +51,7 @@ class UtilisateurModele * @param string $pseudo * @return \Alumni chargé */ - public function inscription(string $email, string $hashpassword): \App\metier\Alumni + public function inscription(string $prenom, string $nom,string $email, string $hashpassword):? \App\metier\Alumni { $dsn = "mysql:host=localhost;dbname=dbAlica"; $username = "Dev"; @@ -60,14 +60,19 @@ class UtilisateurModele $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)) { - // L'insertion a réussi, retournez le nouvel utilisateur - $nouvelUtilisateur = new \App\metier\Alumni($email, $hashpassword, $role); - return $nouvelUtilisateur; + $alumni = $gate->getID($email); + if($profilGate->insert($alumni,$nom, $prenom,$email)){ + // L'insertion a réussi, retournez le nouvel utilisateur + $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\metier\Alumni(null, null, null); + return null; } } diff --git a/php/templates/accueil.html b/php/templates/accueil.html index 87ab6bb..6994331 100755 --- a/php/templates/accueil.html +++ b/php/templates/accueil.html @@ -14,19 +14,26 @@

Accueil

-

{% if pseudo %} - Bienvenue, {{ pseudo }}! +

{% if prenom and nom %} + Bienvenue, {{ prenom }} {{ nom }}! {% else %} Bienvenue, invité! {% endif %}

Vous êtes sur la page d'accueil

-

Vous pouvez vous connecter ou vous inscrire

-

Vous pouvez aussi consulter les articles

-

Vous pouvez aussi consulter les annonces

-

Connexion :

-
- -
+ {% if dVueErreur is not empty %} +
+
+
+
    + {% for erreur in dVueErreur %} +
  • {{ erreur }}
  • + {% endfor %} +
+
+
+
+ {% endif %} + diff --git a/php/templates/connection.html b/php/templates/connection.html index 5d90cbe..20bc8d3 100755 --- a/php/templates/connection.html +++ b/php/templates/connection.html @@ -35,6 +35,7 @@ +
@@ -42,6 +43,19 @@
+ {% if dVueErreur is not empty %} +
+
+
+
    + {% for erreur in dVueErreur %} +
  • {{ erreur }}
  • + {% endfor %} +
+
+
+
+ {% endif %} diff --git a/php/templates/inscription.html b/php/templates/inscription.html index b86bcea..a22ee4b 100755 --- a/php/templates/inscription.html +++ b/php/templates/inscription.html @@ -11,12 +11,25 @@

S'inscrire

- Identifiant + Prénom :
- + +
+
+
+ Nom : +
+
+ +
+
@@ -25,7 +38,9 @@
- +
@@ -34,7 +49,9 @@
- +
@@ -50,6 +67,19 @@
+ {% if dVueErreur is not empty %} +
+
+
+
    + {% for erreur in dVueErreur %} +
  • {{ erreur }}
  • + {% endfor %} +
+
+
+
+ {% endif %} diff --git a/php/templates/inscription_success.html b/php/templates/inscription_success.html new file mode 100644 index 0000000..3e1f2b3 --- /dev/null +++ b/php/templates/inscription_success.html @@ -0,0 +1,24 @@ + + + + + Success + + + +

Inscription effectuée avec succès, vous pouvez désormais vous connecter

+

Vous allez être redirigé vers la page de connexion dans 5 secondes

+
+
+
+
+
+ + + + + \ No newline at end of file