diff --git a/README.md b/README.md index a8e2f99..e637130 100755 --- a/README.md +++ b/README.md @@ -18,6 +18,32 @@ :information_source: Réaliser un projet de PHP consistant à faire une To do List, qui contiendra des visiteurs, utilisateurs ou administrateur. +# Fonctionnalités + +
+ +- Visiteur : + - Ajouter/Supprimer une liste publique + - Modifier une liste publique + - Ajouter/Supprimer des tâches dans une liste publique + - se connecter + - s'inscrire + - Cocher une tâche d'une liste publique + +- Utilisateur (en plus des fonctionnalités visiteurs) : + - Ajouter/Supprimer une liste priver + - Modifier ses listes privées + - Ajouter/Supprimer des tâches à ses listes privé + - Voir son profil + - Supprimer son compte (Toutes ces tâches sont aussi supprimées) + - Modifier son mode de passe + - voir ses informations (Nom/Prenom/mail/Nombre de liste privé réalisé) + - Cocher une tâche d'une liste privé + +- Administrateur (considérer comme un utilisateur, mais avec des droits en plus) : + - Voir tous les utilisateurs + - Supprimer un utilisateur + # Repartition du Gitlab La racine de notre gitlab est composé de deux dossiers essentiels au projet: diff --git a/src/.htaccess b/src/.htaccess index 8cdac8d..c9fd233 100755 --- a/src/.htaccess +++ b/src/.htaccess @@ -19,4 +19,5 @@ RewriteRule ^supprimerCompte$ index.php?action=supprimerCompte [L] RewriteRule ^previousPage$ index.php?action=pagePrécédente [L] RewriteRule ^nextPage$ index.php?action=pageSuivante [L] RewriteRule ^Users$ index.php?action=voirUser [L] -RewriteRule ^listePrive$ index.php?action=listePrive [L] \ No newline at end of file +RewriteRule ^listePrive$ index.php?action=listePrive [L] +RewriteRule ^users$ index.php?action=redirectionVueUtilisateur [L] \ No newline at end of file diff --git a/src/config/config.php b/src/config/config.php index 6595dbf..7d868ec 100755 --- a/src/config/config.php +++ b/src/config/config.php @@ -16,5 +16,6 @@ $vues['listPrive']='vue/html/PageListePrive.php'; $vues['login']='vue/html/login.php'; $vues['NavBar']='vue/html/NavBar.php'; $vues['profil']='vue/html/profil.php'; +$vues['users']='vue/html/pageUtilisateur.php'; ?> diff --git a/src/controller/CtrlAdmin.php b/src/controller/CtrlAdmin.php index ee4a79c..68960fa 100755 --- a/src/controller/CtrlAdmin.php +++ b/src/controller/CtrlAdmin.php @@ -6,7 +6,7 @@ class CtrlAdmin { global $rep,$vues; - $dVueEreur = array (); + $dVueErreur = array (); try{ $action=NULL; @@ -18,28 +18,33 @@ class CtrlAdmin { case NULL: - $this->($dVueEreur); + $this->ConsulterUtilisateurs($dVueErreur); break; + case "redirectionVueUtilisateur": + $this->ConsulterUtilisateurs($dVueErreur); + break; - + case "SupprimerUtilisateur": + $this->SupprimerUtilisateur($dVueErreur); + break; default: - $dVueEreur[] = "Erreur d'appel php"; - require ($rep.$vues['home']); + $dVueErreur[] = "Erreur d'appel php"; + require ($rep.$vues['erreur']); break; } } catch (PDOException $e) { //si erreur BD, pas le cas ici - $dVueEreur[] = "Erreur BD!!! "; + $dVueErreur[] = "Erreur BD!!! "; require ($rep.$vues['erreur']); } catch (Exception $e2) { - $dVueEreur[] = "Erreur inattendue!!! "; + $dVueErreur[] = "Erreur inattendue!!! "; require ($rep.$vues['erreur']); } @@ -48,6 +53,19 @@ class CtrlAdmin { exit(0); }//fin constructeur + public function ConsulterUtilisateurs(array $dVueErreur){ + global $rep,$vues; + $users = MdlAdmin::recupererUtilisateur(); + $action=NULL; + require ($rep.$vues['users']); + } + + public function SupprimerUtilisateur(array $dVueErreur){ + global $rep,$vues; + $users = MdlAdmin::supprimerUtilisateur(); + $this->ConsulterUtilisateurs($dVueErreur); + } + }//fin class ?> diff --git a/src/controller/FrontControleur.php b/src/controller/FrontControleur.php index ebb9f39..4f69961 100755 --- a/src/controller/FrontControleur.php +++ b/src/controller/FrontControleur.php @@ -12,7 +12,7 @@ class FrontControleur { $string_actor=' '; $listeActions=array( 'Utilisateur' => array('logout','redirectionProfil','supprimerCompte', 'listePrive','AjouterListePrive', 'SupprimerListePrive', 'AjouterTachePrive', 'ModifierListePrive', 'SupprimerTachePrive'), - 'Admin' => array('voirUser') + 'Admin' => array('redirectionVueUtilisateur','SupprimerUtilisateur') ); //On récupère l'action diff --git a/src/modele/MdlAdmin.php b/src/modele/MdlAdmin.php index 1f22791..cb9d3b6 100755 --- a/src/modele/MdlAdmin.php +++ b/src/modele/MdlAdmin.php @@ -7,12 +7,6 @@ class MdlAdmin } - public function deconnexion(){ - session_unset(); - session_destroy(); - $_SESSION = array(); - } - public function isConnected(){ if(isset($_SESSION['id']) && isset($_SESSION['role']) && $_SESSION['role']=='admin') { $id=Validation::cleanInt($_SESSION['id']); @@ -24,9 +18,15 @@ class MdlAdmin } else return null; } - + + public function recupererUtilisateur(){ + $userGtw = new UtilisateurGateway(); + return $userGtw->getUtilisateurs(); + } + public function supprimerUtilisateur(){ - + $userGtw = new UtilisateurGateway(); + $userGtw->SupprimerUtilisateur($_GET['idUser']); } } diff --git a/src/modele/MdlUtilisateur.php b/src/modele/MdlUtilisateur.php index bbfd6ce..5754b2f 100755 --- a/src/modele/MdlUtilisateur.php +++ b/src/modele/MdlUtilisateur.php @@ -14,7 +14,12 @@ class MdlUtilisateur $verif_pass=$gtw->getCredentials($mail); if(password_verify($mdp,$verif_pass)){ $userCurrent=$gtw->RechercheUtilisateurViaEmail($mail); - $_SESSION['role']='user'; + if($gtw->existeAdmin($userCurrent->getId())){ + $_SESSION['role']='admin'; + } + else{ + $_SESSION['role']='user'; + } $_SESSION['id']=$userCurrent->getId(); $_SESSION['nom']=$userCurrent->getNom(); $_SESSION['prenom']=$userCurrent->getPrenom(); @@ -26,7 +31,7 @@ class MdlUtilisateur } public function isConnected(){ - if(isset($_SESSION['id']) && isset($_SESSION['role']) && $_SESSION['role']=='user') { + if(isset($_SESSION['id']) && isset($_SESSION['role'])) { $id=Validation::cleanInt($_SESSION['id']); $nom=Validation::cleanString($_SESSION['nom']); $prenom=Validation::cleanString($_SESSION['prenom']); diff --git a/src/modele/gateway/UtilisateurGateway.php b/src/modele/gateway/UtilisateurGateway.php index a06733f..0dfdb89 100755 --- a/src/modele/gateway/UtilisateurGateway.php +++ b/src/modele/gateway/UtilisateurGateway.php @@ -23,6 +23,28 @@ class UtilisateurGateway{ 'id' => array($id, PDO::PARAM_INT))); } + public function existeAdmin(int $id){ + $query="SELECT * FROM ToDoList_Admin WHERE idAdmin=:id"; + $this->con->executeQuery($query, array( + 'id' => array($id, PDO::PARAM_INT))); + $results=$this->con->getResults(); + if($results!=null){ + return true; + }else{ + return false; + } + } + + public function getUtilisateurs(){ + $query = "SELECT * FROM ToDoList_Utilisateur"; + $this->con->executeQuery($query); + $listesUsers = []; + foreach ($this->con->getResults() as $user) { + $listesUsers[] = new Utilisateur($user["id"],$user["nom"],$user["prenom"],$user["pseudo"],$user["email"]); + } + return $listesUsers; + } + // Vérifie que le mail n'existe pas public function isExisteViaMail($mail){ $query="SELECT * FROM ToDoList_Utilisateur WHERE email=:mail"; diff --git a/src/vue/html/NavBar.php b/src/vue/html/NavBar.php index de9d24c..fd39bf3 100755 --- a/src/vue/html/NavBar.php +++ b/src/vue/html/NavBar.php @@ -21,10 +21,10 @@ if(isset($_SESSION['id'])){ ?>
Listes Publiques
Mes listes
+
Mon Profil
-
Les utilisateurs
+
Les utilisateurs
-
Mon Profil
+ + + + + +
+
+
+
+
+
+
+ +
+
+ +
    + +
  • +
    + getNom() ?> : getPrenom() ?> +
    + + + +
  • + +
+ +
+
+ +
+
+
+
+ + + + + + \ No newline at end of file