README completed and Admin finished

modif
Emre KARTAL 2 years ago
parent 786b0addfb
commit b7cf2744b8

@ -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. :information_source: Réaliser un projet de PHP consistant à faire une To do List, qui contiendra des visiteurs, utilisateurs ou administrateur.
# Fonctionnalités
</br>
- 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 # Repartition du Gitlab
La racine de notre gitlab est composé de deux dossiers essentiels au projet: La racine de notre gitlab est composé de deux dossiers essentiels au projet:

@ -20,3 +20,4 @@ RewriteRule ^previousPage$ index.php?action=pagePrécédente [L]
RewriteRule ^nextPage$ index.php?action=pageSuivante [L] RewriteRule ^nextPage$ index.php?action=pageSuivante [L]
RewriteRule ^Users$ index.php?action=voirUser [L] RewriteRule ^Users$ index.php?action=voirUser [L]
RewriteRule ^listePrive$ index.php?action=listePrive [L] RewriteRule ^listePrive$ index.php?action=listePrive [L]
RewriteRule ^users$ index.php?action=redirectionVueUtilisateur [L]

@ -16,5 +16,6 @@ $vues['listPrive']='vue/html/PageListePrive.php';
$vues['login']='vue/html/login.php'; $vues['login']='vue/html/login.php';
$vues['NavBar']='vue/html/NavBar.php'; $vues['NavBar']='vue/html/NavBar.php';
$vues['profil']='vue/html/profil.php'; $vues['profil']='vue/html/profil.php';
$vues['users']='vue/html/pageUtilisateur.php';
?> ?>

@ -6,7 +6,7 @@ class CtrlAdmin {
global $rep,$vues; global $rep,$vues;
$dVueEreur = array (); $dVueErreur = array ();
try{ try{
$action=NULL; $action=NULL;
@ -18,28 +18,33 @@ class CtrlAdmin {
case NULL: case NULL:
$this->($dVueEreur); $this->ConsulterUtilisateurs($dVueErreur);
break; break;
case "redirectionVueUtilisateur":
$this->ConsulterUtilisateurs($dVueErreur);
break;
case "SupprimerUtilisateur":
$this->SupprimerUtilisateur($dVueErreur);
break;
default: default:
$dVueEreur[] = "Erreur d'appel php"; $dVueErreur[] = "Erreur d'appel php";
require ($rep.$vues['home']); require ($rep.$vues['erreur']);
break; break;
} }
} catch (PDOException $e) } catch (PDOException $e)
{ {
//si erreur BD, pas le cas ici //si erreur BD, pas le cas ici
$dVueEreur[] = "Erreur BD!!! "; $dVueErreur[] = "Erreur BD!!! ";
require ($rep.$vues['erreur']); require ($rep.$vues['erreur']);
} }
catch (Exception $e2) catch (Exception $e2)
{ {
$dVueEreur[] = "Erreur inattendue!!! "; $dVueErreur[] = "Erreur inattendue!!! ";
require ($rep.$vues['erreur']); require ($rep.$vues['erreur']);
} }
@ -48,6 +53,19 @@ class CtrlAdmin {
exit(0); exit(0);
}//fin constructeur }//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 }//fin class
?> ?>

@ -12,7 +12,7 @@ class FrontControleur {
$string_actor=' '; $string_actor=' ';
$listeActions=array( $listeActions=array(
'Utilisateur' => array('logout','redirectionProfil','supprimerCompte', 'listePrive','AjouterListePrive', 'SupprimerListePrive', 'AjouterTachePrive', 'ModifierListePrive', 'SupprimerTachePrive'), 'Utilisateur' => array('logout','redirectionProfil','supprimerCompte', 'listePrive','AjouterListePrive', 'SupprimerListePrive', 'AjouterTachePrive', 'ModifierListePrive', 'SupprimerTachePrive'),
'Admin' => array('voirUser') 'Admin' => array('redirectionVueUtilisateur','SupprimerUtilisateur')
); );
//On récupère l'action //On récupère l'action

@ -7,12 +7,6 @@ class MdlAdmin
} }
public function deconnexion(){
session_unset();
session_destroy();
$_SESSION = array();
}
public function isConnected(){ public function isConnected(){
if(isset($_SESSION['id']) && isset($_SESSION['role']) && $_SESSION['role']=='admin') { if(isset($_SESSION['id']) && isset($_SESSION['role']) && $_SESSION['role']=='admin') {
$id=Validation::cleanInt($_SESSION['id']); $id=Validation::cleanInt($_SESSION['id']);
@ -25,8 +19,14 @@ class MdlAdmin
else return null; else return null;
} }
public function supprimerUtilisateur(){ public function recupererUtilisateur(){
$userGtw = new UtilisateurGateway();
return $userGtw->getUtilisateurs();
}
public function supprimerUtilisateur(){
$userGtw = new UtilisateurGateway();
$userGtw->SupprimerUtilisateur($_GET['idUser']);
} }
} }

@ -14,7 +14,12 @@ class MdlUtilisateur
$verif_pass=$gtw->getCredentials($mail); $verif_pass=$gtw->getCredentials($mail);
if(password_verify($mdp,$verif_pass)){ if(password_verify($mdp,$verif_pass)){
$userCurrent=$gtw->RechercheUtilisateurViaEmail($mail); $userCurrent=$gtw->RechercheUtilisateurViaEmail($mail);
$_SESSION['role']='user'; if($gtw->existeAdmin($userCurrent->getId())){
$_SESSION['role']='admin';
}
else{
$_SESSION['role']='user';
}
$_SESSION['id']=$userCurrent->getId(); $_SESSION['id']=$userCurrent->getId();
$_SESSION['nom']=$userCurrent->getNom(); $_SESSION['nom']=$userCurrent->getNom();
$_SESSION['prenom']=$userCurrent->getPrenom(); $_SESSION['prenom']=$userCurrent->getPrenom();
@ -26,7 +31,7 @@ class MdlUtilisateur
} }
public function isConnected(){ 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']); $id=Validation::cleanInt($_SESSION['id']);
$nom=Validation::cleanString($_SESSION['nom']); $nom=Validation::cleanString($_SESSION['nom']);
$prenom=Validation::cleanString($_SESSION['prenom']); $prenom=Validation::cleanString($_SESSION['prenom']);

@ -23,6 +23,28 @@ class UtilisateurGateway{
'id' => array($id, PDO::PARAM_INT))); '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 // Vérifie que le mail n'existe pas
public function isExisteViaMail($mail){ public function isExisteViaMail($mail){
$query="SELECT * FROM ToDoList_Utilisateur WHERE email=:mail"; $query="SELECT * FROM ToDoList_Utilisateur WHERE email=:mail";

@ -21,10 +21,10 @@
if(isset($_SESSION['id'])){ ?> if(isset($_SESSION['id'])){ ?>
<h5><a class="nav-item nav-link text-light" href="VueListePublic">Listes Publiques</a></h5> <h5><a class="nav-item nav-link text-light" href="VueListePublic">Listes Publiques</a></h5>
<h5><a class="nav-item nav-link text-light" href="listePrive">Mes listes</a></h5> <h5><a class="nav-item nav-link text-light" href="listePrive">Mes listes</a></h5>
<h5><a class="nav-item nav-link text-light" href="MonProfil">Mon Profil</a></h5>
<?php if($_SESSION['role']=='admin'){?> <?php if($_SESSION['role']=='admin'){?>
<h5><a class="nav-item nav-link text-warning" href="Users">Les utilisateurs</a></h5> <h5><a class="nav-item nav-link text-warning" href="users">Les utilisateurs</a></h5>
<?php } ?> <?php } ?>
<h5><a class="nav-item nav-link text-light" href="MonProfil">Mon Profil</a></h5>
<h5><button class="nav-item btn btn-outline-light" onclick="myFunction()">Se déconnecter</button></h5> <h5><button class="nav-item btn btn-outline-light" onclick="myFunction()">Se déconnecter</button></h5>
<script> <script>

@ -0,0 +1,144 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" href="./vue/Images/gif.gif" type="../Images/gif">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home Page</title>
<!-- CSS only -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https:/stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="./vue/css/task.css">
<!-- JavaScript Bundle with Popper -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body style="-webkit-user-select: none; /* Safari */
-ms-user-select: none; /* IE 10 and IE 11 */
user-select: none;">
<?php require($rep.$vues['NavBar']); ?>
<br>
<br>
<br>
<section class="vh-100" style="background-color: white;">
<div class="container py-5 h-100">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col col-xl-10">
<div class="card" style="border-radius: 15px;">
<div class="card-body p-5">
<ul class="list-group mb-0">
<?php
foreach($users as $user){
?>
<li
class="list-group-item d-flex justify-content-between align-items-center border-start-0 border-top-0 border-end-0 border-bottom rounded-0 mb-2">
<div class="d-flex align-items-center">
<?= $user->getNom() ?> : <?= $user->getPrenom() ?>
</div>
<a href="index.php?action=SupprimerUtilisateur&idUser=<?= $user->getId() ?>">
<button class="btn btn-default">
<img src="./vue/Images/trash.png" width="20" />
</button>
</a>
</li>
<?php } ?>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
</body>
<!-- Footer -->
<footer class="text-center text-lg-start bg-light ">
<br>
<!-- Section: Links -->
<section class="">
<div class="container text-center text-md-start mt-5">
<!-- Grid row -->
<div class="row mt-3">
<!-- Grid column -->
<div class="col-md-3 col-lg-4 col-xl-3 mx-auto mb-4">
<!-- Content -->
<h6 class="text-uppercase fw-bold mb-4">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wallet2" viewBox="0 0 16 16">
<path d="M12.136.326A1.5 1.5 0 0 1 14 1.78V3h.5A1.5 1.5 0 0 1 16 4.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 13.5v-9a1.5 1.5 0 0 1 1.432-1.499L12.136.326zM5.562 3H13V1.78a.5.5 0 0 0-.621-.484L5.562 3zM1.5 4a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-13z"/>
</svg> Project
</h6>
<p>
2nd year project, consisting of making a To do List in php
, which contains visitors or users, who can add,
delete, see tasks...
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-2 col-lg-2 col-xl-2 mx-auto mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">
Products
</h6>
<p>
<img src="https://img.shields.io/badge/HTML-000?style=for-the-badge&logo=html5&logoColor=orange&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/CSS-000?style=for-the-badge&logo=Css3&logoColor=blue&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/PHP-000?style=for-the-badge&logo=php&logoColor=purple&color=f8f9fa">
</img>
</p>
<p>
<img src="https://img.shields.io/badge/JavaScript-000?style=for-the-badge&logo=javascript&logoColor=yellow&color=f8f9fa">
</img>
</p>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col-md-4 col-lg-3 col-xl-3 mx-auto mb-md-0 mb-4">
<!-- Links -->
<h6 class="text-uppercase fw-bold mb-4">Contact</h6>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
emre.kartal@etu.uca.fr
</p>
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
<path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
</svg>
rayhan.hassou@etu.uca.fr
</p>
<p><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pin" viewBox="0 0 16 16">
<path d="M4.146.146A.5.5 0 0 1 4.5 0h7a.5.5 0 0 1 .5.5c0 .68-.342 1.174-.646 1.479-.126.125-.25.224-.354.298v4.431l.078.048c.203.127.476.314.751.555C12.36 7.775 13 8.527 13 9.5a.5.5 0 0 1-.5.5h-4v4.5c0 .276-.224 1.5-.5 1.5s-.5-1.224-.5-1.5V10h-4a.5.5 0 0 1-.5-.5c0-.973.64-1.725 1.17-2.189A5.921 5.921 0 0 1 5 6.708V2.277a2.77 2.77 0 0 1-.354-.298C4.342 1.674 4 1.179 4 .5a.5.5 0 0 1 .146-.354zm1.58 1.408-.002-.001.002.001zm-.002-.001.002.001A.5.5 0 0 1 6 2v5a.5.5 0 0 1-.276.447h-.002l-.012.007-.054.03a4.922 4.922 0 0 0-.827.58c-.318.278-.585.596-.725.936h7.792c-.14-.34-.407-.658-.725-.936a4.915 4.915 0 0 0-.881-.61l-.012-.006h-.002A.5.5 0 0 1 10 7V2a.5.5 0 0 1 .295-.458 1.775 1.775 0 0 0 .351-.271c.08-.08.155-.17.214-.271H5.14c.06.1.133.191.214.271a1.78 1.78 0 0 0 .37.282z"/>
</svg> Groupe 4</p>
</div>
<!-- Grid column -->
</div>
<!-- Grid row -->
</div>
</section>
<!-- Section: Links -->
<!-- Copyright -->
<div class="text-center p-4" style="background-color: rgba(0, 0, 0, 0.05);">
© 2021 Copyright:
<a class="text-reset fw-bold" href="#">ToDoList.com</a>
</div>
<!-- Copyright -->
</footer>
</html>
Loading…
Cancel
Save