diff --git a/controllers/UserCtrl.php b/controllers/UserCtrl.php index 7ecb8a9..1464775 100644 --- a/controllers/UserCtrl.php +++ b/controllers/UserCtrl.php @@ -90,45 +90,14 @@ class UserCtrl extends MotherCtrl { $objUser = new User(); $strPwdConfirm = $_POST['pwd_confirm'] ?? ""; + $objUser->hydrate($_POST); + $arrError = []; if (!empty($_POST)) { - $objUser->setName($_POST['user_name'] ?? ""); - $objUser->setFirstname($_POST['user_firstname'] ?? ""); - $objUser->setMail($_POST['user_mail'] ?? ""); - $objUser->setPseudo($_POST['user_pseudo'] ?? ""); - $objUser->setPwd($_POST['user_password'] ?? ""); - $objUser->setPhone($_POST['user_phone'] ?? ""); - $objUser->setWork($_POST['user_work'] ?? ""); - $objUser->setLocation($_POST['user_location'] ?? ""); - $objUser->setDescription($_POST['user_description'] ?? ""); - - if (trim($objUser->getName()) === "") { - $arrError['user_name'] = "Le nom est obligatoire"; - } - - if (trim($objUser->getFirstname()) === "") { - $arrError['user_firstname'] = "Le prénom est obligatoire"; - } - - if (trim($objUser->getMail()) === "") { - $arrError['user_mail'] = "L'adresse e-mail est obligatoire"; - } elseif (!filter_var($objUser->getMail(), FILTER_VALIDATE_EMAIL)) { - $arrError['user_mail'] = "Le format de l'adresse e-mail est invalide"; - } - - if (trim($objUser->getPseudo()) === "") { - $arrError['user_pseudo'] = "Le pseudo est obligatoire"; - } - - $strRegex = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{15,}$/"; - if ($objUser->getPwd() == ""){ - $arrError['user_password'] = "Le mot de passe est obligatoire"; - }else if (!preg_match($strRegex, $objUser->getPwd())){ - $arrError['user_password'] = "Le mot de passe ne respecte pas les critères"; - }else if($objUser->getPwd() != $strPwdConfirm){ - $arrError['pwd_confirm'] = "La confirmation du mot de passe ne correspond pas"; - } + + $arrError = array_merge($this->_verifInfos($objUser), + $this->_verifPwd($objUser, $strPwdConfirm)); if (count($arrError) === 0) { $objUserModel = new UserModel(); @@ -156,6 +125,55 @@ class UserCtrl extends MotherCtrl { $this->_arrData['arrError'] = $arrError; $this->_display("signup"); } + + + protected function _verifInfos(User $objUser): array { + + $arrError = []; + + if (trim($objUser->getName()) === "") { + $arrError['user_name'] = "Le nom est obligatoire"; + } + + if (trim($objUser->getFirstname()) === "") { + $arrError['user_firstname'] = "Le prénom est obligatoire"; + } + + if (trim($objUser->getMail()) === "") { + $arrError['user_mail'] = "L'adresse e-mail est obligatoire"; + } elseif (!filter_var($objUser->getMail(), FILTER_VALIDATE_EMAIL)) { + $arrError['user_mail'] = "Le format de l'adresse e-mail est invalide"; + } + + if (trim($objUser->getPseudo()) === "") { + $arrError['user_pseudo'] = "Le pseudo est obligatoire"; + } + + return $arrError; + } + + + /** + * Vérification du mot de passe + */ + protected function _verifPwd(User $objUser, string $strPwdConfirm): array { + + $arrError = []; + + $strRegex = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{15,}$/"; + + if ($objUser->getPwd() == ""){ + $arrError['user_password'] = "Le mot de passe est obligatoire"; + } + else if (!preg_match($strRegex, $objUser->getPwd())){ + $arrError['user_password'] = "Le mot de passe ne respecte pas les critères"; + } + else if ($objUser->getPwd() != $strPwdConfirm){ + $arrError['pwd_confirm'] = "La confirmation du mot de passe ne correspond pas"; + } + + return $arrError; + } /** diff --git a/models/UserModel.php b/models/UserModel.php index 5663504..f171308 100644 --- a/models/UserModel.php +++ b/models/UserModel.php @@ -46,12 +46,19 @@ $arrUser = $rqPrep->fetch(); - if (password_verify($strPwd, $arrUser['user_password'])){ - unset($arrUser['user_password']); - return $arrUser; - }else{ + if ($arrUser === false) { return false; } + + if (empty($arrUser['user_password'])) { + return false; + } + + if (!password_verify($strPwd, $arrUser['user_password'])) { + return false; + } + unset($arrUser['user_password']); + return $arrUser; } /** diff --git a/views/about.tpl b/views/about.tpl index a67dfdc..c75c438 100644 --- a/views/about.tpl +++ b/views/about.tpl @@ -8,151 +8,190 @@ {block name="content"}
+
+ +
-
-

- + +
+

+ Présentation du projet

-

- FOLLIOW est une plateforme web développée dans le cadre d’un projet pédagogique. - Elle permet aux utilisateurs de publier, consulter et partager des projets numériques - à travers une interface simple et structurée. +

+ FOLLIOW est un réseau social dédié aux portfolios numériques.

-

- Ce projet a été conçu afin de mettre en pratique les compétences acquises en - développement web, notamment l’architecture MVC, la gestion des bases de données - et la sécurisation des échanges. +

+ La plateforme permet à chacun de créer un profil personnalisé, de mettre en avant ses projets + et de valoriser ses compétences à travers une présentation claire et professionnelle.

-

-
-

- +

+ Les recruteurs et visiteurs peuvent rechercher des profils, consulter les réalisations + et prendre contact avec les utilisateurs qui les intéressent. +

+ +

+ Ce projet a été développé dans un cadre pédagogique afin de concevoir une application web + complète simulant un environnement professionnel réel. +

+

+ + +
+

+ Fonctionnalités principales

-
    -
  • Création et gestion de projets
  • -
  • Affichage dynamique des contenus
  • -
  • Gestion des utilisateurs
  • -
  • Partage d’un projet par email
  • -
  • Interface responsive et accessible
  • -
-
+
+
+ +
-
-

- +
+
    +
  • + + Partage d’un projet par email +
  • +
  • + + Interface responsive et accessible +
  • +
+
+

+ + + +
+

+ Objectifs pédagogiques

-

+

L’objectif principal de FOLLIOW est de démontrer la capacité à concevoir une application web complète, structurée et sécurisée.

-
-
-

- + +
+

+ Technologies utilisées

-
+
+
-
-
- Backend -

- PHP orienté objet – Architecture MVC – MySQL -

-
+
+ Backend +

+ PHP orienté objet – Architecture MVC – MySQL +

-
-
- Frontend -

- HTML5 – CSS3 – Bootstrap – Smarty -

-
+
+ Frontend +

+ HTML5 – CSS3 – Bootstrap – Smarty +

-
-
- Emails -

- PHPMailer – SMTP – Brevo -

-
+
+ Emails +

+ PHPMailer – SMTP – Brevo +

-
-
- Sécurité -

- Validation des données – Protection des formulaires – Gestion des sessions -

-
+
+ Sécurité +

+ Validation des données – Protection des formulaires – Gestion des sessions +

+
-

+ - +
-
-

- - Projet pédagogique -

+
-

- FOLLIOW a été réalisé dans le cadre d’une formation en développement web. - Il s’agit d’un projet démonstratif à visée éducative. -

+
+

+ + Projet pédagogique +

-
+

+ FOLLIOW a été développé dans le cadre du module PROJET WEB 2, + consacré à la conception d’une application web dynamique en PHP orienté objet (architecture MVC), + au sein d’une formation en Développement Web et Web Mobile à CCI Campus Colmar. + Il s’agit d’une plateforme démonstrative réalisée à des fins pédagogiques. +

+
-

- - Contact -

+
+

+ + Contact +

-

- Pour toute question : -

+

+ Pour toute question : +

- - projet.folliow@hotmail.com - + + projet.folliow@hotmail.com + +
+
+ {/block} \ No newline at end of file diff --git a/views/mentions.tpl b/views/mentions.tpl index 2c83ee2..e2c3f1a 100644 --- a/views/mentions.tpl +++ b/views/mentions.tpl @@ -7,8 +7,8 @@ {block name="date_maj"}

- - Dernière mise à jour : + + Dernière mise à jour :

{/block} @@ -40,9 +40,9 @@
-
-{/block} +{/block} \ No newline at end of file diff --git a/views/signup.tpl b/views/signup.tpl index 5dee035..3d22e0d 100644 --- a/views/signup.tpl +++ b/views/signup.tpl @@ -98,17 +98,17 @@
@@ -141,7 +141,7 @@ onclick="togglePassword('pwd_confirm', this)" style="z-index: 10;" > - +
@@ -238,7 +238,7 @@