Loading src/lib/assertion.php +8 −2 Original line number Diff line number Diff line Loading @@ -3,12 +3,18 @@ class AssertionFailedException extends Exception{} function assertEquals($var1, $var2){ if($var1 !== $var2){ throw new AssertionFailedException("expected value : ".$var1." actual : ".$var2.""); throw new AssertionFailedException("assertion : expected value : ".$var1." actual : ".$var2.""); } } function assertTrue($bool){ if(! $bool){ throw new AssertionFailedException("expected true value"); throw new AssertionFailedException("assertion : expected true value"); } } function assertFalse($bool){ if($bool){ throw new AssertionFailedException("assertion : expected false value"); } } No newline at end of file src/model/utilisateur.php +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ class Utilisateur { * @param string $id id de l'utilisateur (lecture seule) * @param string $dateInscription date d'inscription (lecture seule) */ public function __construct(string $pseudo, string $hashMdp, string $email, string $type, string $statut = "A", string $id = "", string $nom = "", string $prenom = "", string $dateInscription = ""){$this->pseudo = $pseudo;$this->hashMdp = $hashMdp;$this->email = $email;$this->type = $type;$this->nom = $nom;$this->prenom = $prenom;$this->statut = $statut;$this->id = $id;$this->dateInscription = $dateInscription;} public function __construct(string $pseudo, string $email, string $type, string $statut = "A", string $id = "", string $nom = "", string $prenom = "", string $dateInscription = ""){$this->pseudo = $pseudo;$this->email = $email;$this->type = $type;$this->nom = $nom;$this->prenom = $prenom;$this->statut = $statut;$this->id = $id;$this->dateInscription = $dateInscription;} /** * Renvoie le pseudo de l'utilisateur. Loading src/model/utilisateurManager.php +66 −10 Original line number Diff line number Diff line Loading @@ -14,6 +14,18 @@ require_once 'src/model/utilisateur.php'; */ class UtilisateurManager extends Manager{ private function utilisateurFromLigne(array $ligne): Utilisateur{ $pseudo = $ligne['UTIL_PSEUDO']; $email = $ligne['UTIL_EMAIL']; $type = $ligne['UTIL_TYPE']; $nom = $ligne['UTIL_NOM']; $prenom = $ligne['UTIL_PRENOM']; $statut = $ligne['UTIL_STATUT']; $id = $ligne['UTIL_ID']; $dateInscription = $ligne['UTIL_DATE_INSCRIPTION']; return new Utilisateur($pseudo, $email, $type, $statut, $id, $nom, $prenom, $dateInscription); } /** * Renvoie un utilisateur en fonction de son id. Loading @@ -21,9 +33,18 @@ class UtilisateurManager extends Manager{ * @return ?Utilisateur */ public function getUtilisateur(string $id): ?Utilisateur{ throw new Exception('not implemented yet'); $requete = "select * from CUI_UTILISATEUR WHERE UTIL_ID = '$id'"; $resultat = $this->projectionBdd($requete); if(count($resultat) === 0){ return null; } return $this->utilisateurFromLigne($resultat[0]); } /** * Renvoie tous les utilisateurs, sauf ceux qui ont été supprimés. Loading @@ -31,20 +52,55 @@ class UtilisateurManager extends Manager{ * @return array un tableau d'Utilisateurs */ public function getUtilisateurs(): array{ throw new Exception('not implemented yet'); $requete = "select * from CUI_UTILISATEUR WHERE UTIL_STATUT != 'D'"; $resultat = $this->projectionBdd($requete); $utilisateurs = []; foreach($resultat as $ligne){ $utilisateurs[] = $this->utilisateurFromLigne($ligne); } return $utilisateurs; } /** * Tente de connecter un utilisateur. * Renvoie l'Utilisateur si la connexion a réussi, sinon renvoie null. * @param string $identifiant le pseudo ou l'adresse email de l'utilisateur. * @param string $hashMdp le mot de passe hashé de l'utilisateur * @param string $motDePasse le mot de passe de l'utilisateur * @return ?Utilisateur */ public function connecter(string $identifiant, string $hashMdp): ?Utilisateur{ throw new Exception('not implemented yet'); public function connecter(string $identifiant, string $motDePasse): ?Utilisateur{ $requete = "select * from CUI_UTILISATEUR WHERE UTIL_STATUT = 'A' AND (UTIL_PSEUDO = '$identifiant' OR UTIL_EMAIL = '$identifiant')"; $resultat = $this->projectionBdd($requete); if(count($resultat) > 1){ throw new Exception("plusieurs utilisateurs ont été trouvés"); } if(count($resultat) === 0){ return null; } if(! password_verify($motDePasse, $resultat[0]["UTIL_MDP"])){ return null; } return $this->utilisateurFromLigne($resultat[0]); } private function setStatut(Utilisateur $utilisateur, string $codeStatut): void{ $requete = "UPDATE CUI_UTILISATEUR SET UTIL_STATUT = ? WHERE UTIL_ID = ?"; $nbLignes = $this->requetePrepare($requete, [$codeStatut, $utilisateur->getId()]); if($nbLignes === 0){ throw new Exception("échec du changement de statut"); } } /** * Suspends un utilisateur (change son statut). Loading @@ -52,7 +108,7 @@ class UtilisateurManager extends Manager{ * @return void */ public function suspendreUtilisateur(Utilisateur $utilisateur){ throw new Exception('not implemented yet'); $this->setStatut($utilisateur, 'S'); } /** Loading @@ -61,7 +117,7 @@ class UtilisateurManager extends Manager{ * @return void */ public function leverSuspension(Utilisateur $utilisateur){ throw new Exception('not implemented yet'); $this->setStatut($utilisateur, 'A'); } Loading @@ -73,6 +129,6 @@ class UtilisateurManager extends Manager{ * @return void */ public function supprimerUtilisateur(Utilisateur $utilisateur){ throw new Exception('not implemented yet'); $this->setStatut($utilisateur, 'D'); } } No newline at end of file test/testUtilisateurs.php 0 → 100644 +48 −0 Original line number Diff line number Diff line <?php require_once 'src/lib/assertion.php'; require_once 'src/model/utilisateurManager.php'; require_once 'src/model/utilisateur.php'; testUtilisateurs(); function testUtilisateurs(){ $manager = new UtilisateurManager(); $motDePasse = "test"; // Test de connexion $utilisateur = $manager->connecter('test', $motDePasse); assertTrue(! is_null($utilisateur)); assertEquals('Jean', $utilisateur->getPrenom()); assertEquals('Test', $utilisateur->getNom()); // Test de la méthode getUtilisateur(string $id) $utilisateurBis = $manager->getUtilisateur($utilisateur->getId()); assertEquals($utilisateur->getDateInscription(), $utilisateurBis->getDateInscription()); // Test de la méthode getUtilisateurs() assertTrue(contientUtilisateur($manager->getUtilisateurs(), $utilisateur)); // Test de la suspension d'utilisateurs $manager->suspendreUtilisateur($utilisateurBis); assertFalse($manager->getUtilisateur($utilisateurBis->getId())->estActif()); $manager->leverSuspension($utilisateurBis); assertTrue($manager->getUtilisateur($utilisateurBis->getId())->estActif()); // Test de la supression d'utilisateurs /*$manager->supprimerUtilisateur($utilisateur); assertTrue(is_null($manager->connecter('test', $motDePasse))); assertFalse(contientUtilisateur($manager->getUtilisateurs(), $utilisateur));*/ } function contientUtilisateur($tab, $utilisateur){ foreach ($tab as $element){ if ($element->getId() == $utilisateur->getId()){ return true; } } return false; } No newline at end of file test/tests.php +1 −0 Original line number Diff line number Diff line Loading @@ -5,5 +5,6 @@ require_once 'src/lib/assertion.php'; require_once 'test/testEdito.php'; require_once 'test/testTags.php'; require_once 'test/testsIngredients.php'; require_once 'test/testUtilisateurs.php'; echo "<h2>Les tests ont passés avec succès</h2>"; No newline at end of file Loading
src/lib/assertion.php +8 −2 Original line number Diff line number Diff line Loading @@ -3,12 +3,18 @@ class AssertionFailedException extends Exception{} function assertEquals($var1, $var2){ if($var1 !== $var2){ throw new AssertionFailedException("expected value : ".$var1." actual : ".$var2.""); throw new AssertionFailedException("assertion : expected value : ".$var1." actual : ".$var2.""); } } function assertTrue($bool){ if(! $bool){ throw new AssertionFailedException("expected true value"); throw new AssertionFailedException("assertion : expected true value"); } } function assertFalse($bool){ if($bool){ throw new AssertionFailedException("assertion : expected false value"); } } No newline at end of file
src/model/utilisateur.php +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ class Utilisateur { * @param string $id id de l'utilisateur (lecture seule) * @param string $dateInscription date d'inscription (lecture seule) */ public function __construct(string $pseudo, string $hashMdp, string $email, string $type, string $statut = "A", string $id = "", string $nom = "", string $prenom = "", string $dateInscription = ""){$this->pseudo = $pseudo;$this->hashMdp = $hashMdp;$this->email = $email;$this->type = $type;$this->nom = $nom;$this->prenom = $prenom;$this->statut = $statut;$this->id = $id;$this->dateInscription = $dateInscription;} public function __construct(string $pseudo, string $email, string $type, string $statut = "A", string $id = "", string $nom = "", string $prenom = "", string $dateInscription = ""){$this->pseudo = $pseudo;$this->email = $email;$this->type = $type;$this->nom = $nom;$this->prenom = $prenom;$this->statut = $statut;$this->id = $id;$this->dateInscription = $dateInscription;} /** * Renvoie le pseudo de l'utilisateur. Loading
src/model/utilisateurManager.php +66 −10 Original line number Diff line number Diff line Loading @@ -14,6 +14,18 @@ require_once 'src/model/utilisateur.php'; */ class UtilisateurManager extends Manager{ private function utilisateurFromLigne(array $ligne): Utilisateur{ $pseudo = $ligne['UTIL_PSEUDO']; $email = $ligne['UTIL_EMAIL']; $type = $ligne['UTIL_TYPE']; $nom = $ligne['UTIL_NOM']; $prenom = $ligne['UTIL_PRENOM']; $statut = $ligne['UTIL_STATUT']; $id = $ligne['UTIL_ID']; $dateInscription = $ligne['UTIL_DATE_INSCRIPTION']; return new Utilisateur($pseudo, $email, $type, $statut, $id, $nom, $prenom, $dateInscription); } /** * Renvoie un utilisateur en fonction de son id. Loading @@ -21,9 +33,18 @@ class UtilisateurManager extends Manager{ * @return ?Utilisateur */ public function getUtilisateur(string $id): ?Utilisateur{ throw new Exception('not implemented yet'); $requete = "select * from CUI_UTILISATEUR WHERE UTIL_ID = '$id'"; $resultat = $this->projectionBdd($requete); if(count($resultat) === 0){ return null; } return $this->utilisateurFromLigne($resultat[0]); } /** * Renvoie tous les utilisateurs, sauf ceux qui ont été supprimés. Loading @@ -31,20 +52,55 @@ class UtilisateurManager extends Manager{ * @return array un tableau d'Utilisateurs */ public function getUtilisateurs(): array{ throw new Exception('not implemented yet'); $requete = "select * from CUI_UTILISATEUR WHERE UTIL_STATUT != 'D'"; $resultat = $this->projectionBdd($requete); $utilisateurs = []; foreach($resultat as $ligne){ $utilisateurs[] = $this->utilisateurFromLigne($ligne); } return $utilisateurs; } /** * Tente de connecter un utilisateur. * Renvoie l'Utilisateur si la connexion a réussi, sinon renvoie null. * @param string $identifiant le pseudo ou l'adresse email de l'utilisateur. * @param string $hashMdp le mot de passe hashé de l'utilisateur * @param string $motDePasse le mot de passe de l'utilisateur * @return ?Utilisateur */ public function connecter(string $identifiant, string $hashMdp): ?Utilisateur{ throw new Exception('not implemented yet'); public function connecter(string $identifiant, string $motDePasse): ?Utilisateur{ $requete = "select * from CUI_UTILISATEUR WHERE UTIL_STATUT = 'A' AND (UTIL_PSEUDO = '$identifiant' OR UTIL_EMAIL = '$identifiant')"; $resultat = $this->projectionBdd($requete); if(count($resultat) > 1){ throw new Exception("plusieurs utilisateurs ont été trouvés"); } if(count($resultat) === 0){ return null; } if(! password_verify($motDePasse, $resultat[0]["UTIL_MDP"])){ return null; } return $this->utilisateurFromLigne($resultat[0]); } private function setStatut(Utilisateur $utilisateur, string $codeStatut): void{ $requete = "UPDATE CUI_UTILISATEUR SET UTIL_STATUT = ? WHERE UTIL_ID = ?"; $nbLignes = $this->requetePrepare($requete, [$codeStatut, $utilisateur->getId()]); if($nbLignes === 0){ throw new Exception("échec du changement de statut"); } } /** * Suspends un utilisateur (change son statut). Loading @@ -52,7 +108,7 @@ class UtilisateurManager extends Manager{ * @return void */ public function suspendreUtilisateur(Utilisateur $utilisateur){ throw new Exception('not implemented yet'); $this->setStatut($utilisateur, 'S'); } /** Loading @@ -61,7 +117,7 @@ class UtilisateurManager extends Manager{ * @return void */ public function leverSuspension(Utilisateur $utilisateur){ throw new Exception('not implemented yet'); $this->setStatut($utilisateur, 'A'); } Loading @@ -73,6 +129,6 @@ class UtilisateurManager extends Manager{ * @return void */ public function supprimerUtilisateur(Utilisateur $utilisateur){ throw new Exception('not implemented yet'); $this->setStatut($utilisateur, 'D'); } } No newline at end of file
test/testUtilisateurs.php 0 → 100644 +48 −0 Original line number Diff line number Diff line <?php require_once 'src/lib/assertion.php'; require_once 'src/model/utilisateurManager.php'; require_once 'src/model/utilisateur.php'; testUtilisateurs(); function testUtilisateurs(){ $manager = new UtilisateurManager(); $motDePasse = "test"; // Test de connexion $utilisateur = $manager->connecter('test', $motDePasse); assertTrue(! is_null($utilisateur)); assertEquals('Jean', $utilisateur->getPrenom()); assertEquals('Test', $utilisateur->getNom()); // Test de la méthode getUtilisateur(string $id) $utilisateurBis = $manager->getUtilisateur($utilisateur->getId()); assertEquals($utilisateur->getDateInscription(), $utilisateurBis->getDateInscription()); // Test de la méthode getUtilisateurs() assertTrue(contientUtilisateur($manager->getUtilisateurs(), $utilisateur)); // Test de la suspension d'utilisateurs $manager->suspendreUtilisateur($utilisateurBis); assertFalse($manager->getUtilisateur($utilisateurBis->getId())->estActif()); $manager->leverSuspension($utilisateurBis); assertTrue($manager->getUtilisateur($utilisateurBis->getId())->estActif()); // Test de la supression d'utilisateurs /*$manager->supprimerUtilisateur($utilisateur); assertTrue(is_null($manager->connecter('test', $motDePasse))); assertFalse(contientUtilisateur($manager->getUtilisateurs(), $utilisateur));*/ } function contientUtilisateur($tab, $utilisateur){ foreach ($tab as $element){ if ($element->getId() == $utilisateur->getId()){ return true; } } return false; } No newline at end of file
test/tests.php +1 −0 Original line number Diff line number Diff line Loading @@ -5,5 +5,6 @@ require_once 'src/lib/assertion.php'; require_once 'test/testEdito.php'; require_once 'test/testTags.php'; require_once 'test/testsIngredients.php'; require_once 'test/testUtilisateurs.php'; echo "<h2>Les tests ont passés avec succès</h2>"; No newline at end of file