Paaxio 1.0
Plateforme de streaming musical - SAE IUT Bayonne
Chargement...
Recherche...
Aucune correspondance
controller_admin.class.php
Aller à la documentation de ce fichier.
1<?php
2
24{
31 public function __construct(\Twig\Environment $twig, \Twig\Loader\FilesystemLoader $loader)
32 {
33 parent::__construct($loader, $twig);
34 }
35
45 public function afficher()
46 {
47 // Vérification du rôle Admin
48 $this->requireRole(RoleEnum::Admin);
49
50 $pdo = Bd::getInstance()->getConnexion();
51 $utilisateurDAO = new UtilisateurDAO($pdo);
52 $utilisateurs = $utilisateurDAO->findAll();
53
54 $successMessage = null;
55 if (isset($_GET['success'])) {
56 if ($_GET['success'] == 1) $successMessage = "L'utilisateur a été créé avec succès !";
57 if ($_GET['success'] == 2) $successMessage = "L'utilisateur a été modifié avec succès !";
58 }
59
60 $template = $this->getTwig()->load('admin_dashboard.html.twig');
61 echo $template->render([
62 'page' => ['title' => "Admin Dashboard", 'name' => "admin"],
63 'session' => $_SESSION,
64 'utilisateurs' => $utilisateurs,
65 'success' => $successMessage
66 ]);
67 }
68
78 public function supprimer()
79 {
80 // Vérification du rôle Admin
81 $this->requireRole(RoleEnum::Admin);
82
83 if (isset($_GET['id'])) {
84 $pdo = Bd::getInstance()->getConnexion();
85 $utilisateurDAO = new UtilisateurDAO($pdo);
86
87 // Protection : ne pas se supprimer soi-même
88 if (isset($_SESSION['user_email']) && $_GET['id'] == $_SESSION['user_email']) {
89 // Redirection propre avec la méthode du contrôleur parent
90 $this->redirectTo('admin', 'afficher');
91 return;
92 }
93
94 $utilisateurDAO->delete($_GET['id']);
95 }
96
97 // Redirection propre après suppression
98 $this->redirectTo('admin', 'afficher');
99 }
100
110 public function consulter()
111 {
112 // Vérification du rôle Admin
113 $this->requireRole(RoleEnum::Admin);
114
115 if (!isset($_GET['id'])) {
116 $this->redirectTo('admin', 'afficher');
117 return;
118 }
119
120 $pdo = Bd::getInstance()->getConnexion();
121 $utilisateurDAO = new UtilisateurDAO($pdo);
122
123 $user = $utilisateurDAO->find($_GET['id']);
124
125 if (!$user) {
126 $this->redirectTo('admin', 'afficher');
127 return;
128 }
129
130 $template = $this->getTwig()->load('admin_utilisateur_consulter.html.twig');
131 echo $template->render([
132 'page' => ['title' => "Consulter Utilisateur - " . $user->getPseudoUtilisateur(), 'name' => "admin"],
133 'session' => $_SESSION,
134 'user' => $user
135 ]);
136 }
137
151 public function modifier()
152 {
153 // Sécurité : Vérification manuelle du rôle Admin
154 $this->requireRole(RoleEnum::Admin);
155
156 $pdo = $this->getPDO();
157 $utilisateurDAO = new UtilisateurDAO($pdo);
158 $roleDao = new RoleDAO($pdo);
159
160 $error = null;
161 $user = null;
162
163 // Récupération de l'identifiant (Email) via GET ou POST
164 $emailTarget = $_GET['id'] ?? $_POST['original_email'] ?? null;
165
166 if (!$emailTarget) {
167 $this->redirectTo('admin', 'afficher');
168 return;
169 }
170
171 // Recherche de l'utilisateur
172 $user = $utilisateurDAO->find($emailTarget);
173 if (!$user) {
174 $this->redirectTo('admin', 'afficher');
175 return;
176 }
177
178 // Traitement du formulaire (POST)
179 if ($_SERVER['REQUEST_METHOD'] === 'POST') {
180 $pseudo = trim($_POST['pseudo'] ?? '');
181 $roleType = $_POST['role'] ?? 'auditeur';
182 $newPassword = $_POST['mdp'] ?? '';
183
184 // Vérification si le pseudo est déjà pris (sauf si c'est le sien)
185 if ($pseudo !== $user->getPseudoUtilisateur() && $utilisateurDAO->existsByPseudo($pseudo)) {
186 $error = "Ce pseudo est déjà utilisé par un autre membre.";
187 } else {
188 try {
189 // Mise à jour des infos de base
190 $user->setPseudoUtilisateur($pseudo);
191 $user->setNomUtilisateur($pseudo);
192
193 // Mise à jour du Rôle
194 $newRole = $roleDao->findByType($roleType);
195 if ($newRole) {
196 $user->setRoleUtilisateur($newRole);
197 }
198
199 // Mise à jour du Mot de passe (Uniquement si rempli)
200 if (!empty($newPassword)) {
201 $user->setMotDePasseUtilisateur(password_hash($newPassword, PASSWORD_ARGON2ID));
202 }
203
204 // Sauvegarde en base de données
205 if ($utilisateurDAO->update($user)) {
206 // Redirection vers le dashboard avec message de succès (success=2)
207 $this->redirectTo('admin', 'afficher', ['success' => 2]);
208 return;
209 } else {
210 $error = "Erreur lors de la mise à jour.";
211 }
212 } catch (Exception $e) {
213 $error = "Erreur système : " . $e->getMessage();
214 }
215 }
216 }
217
218 // Affichage du formulaire
219 $template = $this->getTwig()->load('utilisateur_modifier.html.twig');
220 echo $template->render([
221 'page' => ['title' => 'Modifier Utilisateur'],
222 'session' => $_SESSION,
223 'user' => $user,
224 'error' => $error
225 ]);
226 }
227}
Contrôleur dédié à la gestion de l'administration.
afficher()
Affiche le tableau de bord de l'administrateur.
consulter()
Consulte les détails d'un utilisateur.
supprimer()
Supprime un utilisateur spécifique.
modifier()
Modifie un utilisateur existant.
__construct(\Twig\Environment $twig, \Twig\Loader\FilesystemLoader $loader)
Constructeur du contrôleur admin.
Classe de base pour tous les contrôleurs de l'application.
Twig Environment $twig
requireRole($requiredRole)
Exige que l'utilisateur ait un rôle spécifique.
redirectTo(string $controller, string $method, array $params=[])
Redirige vers un contrôleur et une méthode donnés.
Twig Loader FilesystemLoader $loader
getPDO()
Récupère la connexion PDO.
getTwig()
Récupère l'environnement Twig.