Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
routes.php
Aller à la documentation de ce fichier.
1<?php
10
11global $loader, $twig;
12
20
21$router = Router::getInstance();
22
23$router->get('/', function () use ($loader, $twig) {
24 ControllerFactory::getController("game", $loader, $twig)->call("showHomePage");
25 exit;
26}, 'player');
27
28// Route pour afficher le profil
29$router->get('/profile', function () use ($loader, $twig) {
30 ControllerFactory::getController("profile", $loader, $twig)->call("showByPlayer", [
31 "playerUuid" => $_SESSION["uuid"]
32 ]);
33 exit;
34}, 'player');
35
36$router->put('/profile/update-style/:idArticle', function ($idArticle) use ($loader, $twig) {
37 ControllerFactory::getController("profile", $loader, $twig)->call("updateStyle", [
38 "uuidPlayer" => $_SESSION["uuid"],
39 "idArticle" => $idArticle,
40 ]);
41 exit;
42}, 'player');
43
44$router->post('/profile/update-password', function () use ($loader, $twig) {
45 ControllerFactory::getController("profile", $loader, $twig)->call("editPassword", [
46 "newPassword" => rawurldecode($_POST["newPassword"]),
47 ]);
48 exit;
49}, 'player');
50
51// Route pour afficher le formulaire de connexion
52$router->get('/login', function () use ($loader, $twig) {
53 ControllerFactory::getController("auth", $loader, $twig)->call("showLoginPage");
54 exit;
55}, 'guest');
56
57// Route pour traiter la soumission du formulaire de connexion
58$router->post('/login', function () use ($loader, $twig) {
59 try {
60 if (isset($_POST['email']) && isset($_POST['password'])) {
61 ControllerFactory::getController("auth", $loader, $twig)->call("login", [
62 "email" => $_POST['email'],
63 "password" => $_POST['password'],
64 "rememberMe" => isset($_POST['rememberMe']) && $_POST['rememberMe'] === 'true',
65 "cloudflareCaptchaToken" => $_POST['cfToken'] ?? null
66 ]);
67 exit;
68 }
69 throw new Exception("Merci de renseigner une adresse e-mail et un mot de passe valides");
70 } catch (Exception $e) {
71 MessageHandler::addExceptionParametersToSession($e);
72 ControllerFactory::getController("auth", $loader, $twig)->call("showLoginPage");
73 }
74}, 'guest');
75
76$router->get('/logout', function () use ($loader, $twig) {
77 ControllerFactory::getController("auth", $loader, $twig)->call("logout");
78 exit;
79}, 'auth');
80
81$router->get('/game/:code', function ($code) use ($loader, $twig) {
82 ControllerFactory::getController("game", $loader, $twig)->call("showGame", ["code" => $code]);
83}, 'player');
84
85$router->post('/game/:code/join', function ($code) use ($loader, $twig) {
86 ControllerFactory::getController("game", $loader, $twig)->call("joinGameWithCode", [
87 "method" => 'POST',
88 "code" => $code,
89 ]);
90 exit;
91}, 'player');
92
93$router->delete('/game/:code/quit', function ($code) use ($loader, $twig) {
94 ControllerFactory::getController("game", $loader, $twig)->call("quitGame", [
95 "code" => $code,
96 "playerUuid" => $_SESSION['uuid']
97 ]);
98 exit;
99}, 'player');
100
101$router->post('/game/search/:gameId', function (int $gameId) use ($loader, $twig) {
102 ControllerFactory::getController("game", $loader, $twig)->call("joinGameFromSearch", [
103 "gameId" => $gameId,
104 ]);
105 exit;
106}, 'player');
107
108$router->post('/game/:code/start', function ($code) use ($loader, $twig) {
109 ControllerFactory::getController("game", $loader, $twig)->call("initGame", [
110 "code" => $code,
111 "settings" => json_decode($_POST['settings'], true)
112 ]);
113 exit;
114}, 'player');
115
116$router->post('/game/:code/visibility', function ($code) use ($loader, $twig) {
117 ControllerFactory::getController("game", $loader, $twig)->call("changeVisibility", [
118 "code" => $code,
119 "isPrivate" => $_POST['isPrivate'] === 'true'
120 ]);
121 exit;
122}, 'player');
123
124$router->post('/game/create/:gameId', function (int $gameId) use ($loader, $twig) {
125 ControllerFactory::getController("game", $loader, $twig)->call("createGame", [
126 "gameId" => $gameId,
127 ]);
128}, 'player');
129
130$router->get('/shop', function () use ($loader, $twig) {
131 ControllerFactory::getController("shop", $loader, $twig)->call("show");
132 exit;
133}, 'player');
134
135$router->get('/shop/basket', function () use ($loader, $twig) {
136 ControllerFactory::getController("basket", $loader, $twig)->call("show");
137 exit;
138}, 'player');
139
140$router->post('/shop/basket/add', function () use ($loader, $twig) {
141 ControllerFactory::getController("basket", $loader, $twig)->call("addArticleToBasket");
142 exit;
143}, 'player');
144
145$router->delete('/shop/basket/remove/:id', function ($id) use ($loader, $twig) {
146
147 ControllerFactory::getController("basket", $loader, $twig)->call("removeArticleBasket", ["id" => $id]);
148 exit;
149}, 'player');
150
151$router->get('/shop/basket/checkout', function () use ($loader, $twig) {
152 if (empty($_SESSION['basket'])) {
153 MessageHandler::addExceptionParametersToSession(new UnauthorizedAccessException("Votre panier est vide"));
154 header('Location: /shop');
155 exit;
156 }
157 ControllerFactory::getController("shop", $loader, $twig)->call("showCheckout");
158 exit;
159}, 'player');
160
161$router->post('/shop/basket/checkout', function () {
162 exit;
163}, 'player');
164
165$router->post('/shop/basket/checkout/confirm', function () use ($loader, $twig) {
166 ControllerFactory::getController("shop", $loader, $twig)->call("checkPaymentRequirement", array($_POST));
167 exit;
168}, 'player');
169
170$router->get('/shop/basket/checkout/success-payment', function () use ($loader, $twig) {
171 ControllerFactory::getController("shop", $loader, $twig)->call("showSuccessPayment", ["articles" => $_SESSION['basket'], "player" => $_SESSION['uuid'], "paymentType" => 'card']);
172 exit;
173}, 'player');
174
175$router->get('/register', function () use ($loader, $twig) {
176 ControllerFactory::getController("auth", $loader, $twig)->call("showRegistrationPage");
177 exit;
178}, 'guest');
179
180$router->post('/register', function () use ($loader, $twig) {
181 if (isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['passwordConfirm']) && isset($_POST['termsOfService']) && isset($_POST['privacyPolicy'])) {
182 ControllerFactory::getController("auth", $loader, $twig)->call("register", [
183 "username" => $_POST['username'],
184 "email" => $_POST['email'],
185 "password" => $_POST['password'],
186 "passwordConfirm" => $_POST['passwordConfirm'],
187 "termsOfServiceIsChecked" => $_POST['termsOfService'] === 'true',
188 "privacyPolicyIsChecked" => $_POST['privacyPolicy'] === 'true',
189 "cloudflareCaptchaToken" => $_POST['cfToken'] ?? null
190 ]);
191 exit;
192 }
193 throw new MalformedRequestException("Données reçues incomplètes.");
194}, 'guest');
195
196$router->get('/confirm-email/:token', function (string $token) use ($loader, $twig) {
197 ControllerFactory::getController("auth", $loader, $twig)->call("confirmEmail", ["token" => $token, "isLoggedIn" => isset($_SESSION['uuid'])]);
198 exit;
199}, '*');
200
201$router->get('/forgot-password', function () use ($loader, $twig) {
202 ControllerFactory::getController("auth", $loader, $twig)->call("showForgotPasswordPage");
203 exit;
204}, 'guest');
205
206$router->post('/forgot-password', function () use ($loader, $twig) {
207 ControllerFactory::getController("auth", $loader, $twig)->call("sendResetPasswordLink", ["email" => $_POST['email'] ?? null]);
208 exit;
209}, 'guest');
210
211$router->get('/reset-password/:token', function (string $token) use ($loader, $twig) {
212 ControllerFactory::getController("auth", $loader, $twig)->call("showResetPasswordPage", ["token" => $token]);
213 exit;
214}, 'guest');
215
216$router->post('/reset-password/:token', function (string $token) use ($loader, $twig) {
217 ControllerFactory::getController("auth", $loader, $twig)->call("resetPassword", [
218 "token" => $token,
219 "password" => $_POST['password'],
220 "passwordConfirm" => $_POST['passwordConfirm']
221 ]);
222}, 'guest');
223
224$router->get('/profile/view/:uuid', function ($uuid) use ($loader, $twig) {
225 ControllerFactory::getController("profile", $loader, $twig)->call("showByPlayer", ["playerUuid" => $uuid]);
226 exit;
227}, 'player');
228
229$router->put('/profile', function () {
230 echo "Mise à jour du profil<br/>";
231 echo "A IMPLEMENTER";
232 exit;
233});
234
235$router->get('/invoice/:id', function ($id) use ($loader, $twig) {
236 ControllerFactory::getController("shop", $loader, $twig)->call("showInvoice", ["invoiceId" => $id]);
237}, 'player');
238
239$router->get('/disable-account/:uuid', function ($uuid) use ($loader, $twig) {
240 ControllerFactory::getController("profile", $loader, $twig)->call("disableAccount", ["uuid" => $uuid]);
241 exit;
242}, 'player');
243
244$router->post('/', function () use ($loader, $twig) {
245 ControllerFactory::getController("suggestion", $loader, $twig)->call("sendSuggestion", [
246 "object" => $_POST["object"],
247 "suggestion" => $_POST['suggestion']
248 ]);
249 exit;
250}, 'player');
251
252$router->get('/cgu', function () use ($loader, $twig) {
253 ControllerFactory::getController("policy", $loader, $twig)->call("showCgu");
254 exit;
255});
256
257$router->get('/game/informations/:id', function ($id) use ($loader, $twig) {
258 ControllerFactory::getController("game", $loader, $twig)->call("getGameInformations", ["id" => $id]);
259 exit;
260}, 'player');
261
262$router->put('/suggest/deny/:id', function ($id) use ($loader, $twig) {
263 ControllerFactory::getController("dashboard", $loader, $twig)->call("denySuggestion", ["id" => $id]);
264 exit;
265}, 'moderator');
266
267$router->put('/suggest/accept/:id', function ($id) use ($loader, $twig) {
268 ControllerFactory::getController("dashboard", $loader, $twig)->call("acceptSuggestion", ["id" => $id]);
269 exit;
270}, 'moderator');
271
272$router->get('/', function () use ($loader, $twig) {
273 ControllerFactory::getController("dashboard", $loader, $twig)->call("showDashboard");
274 exit;
275}, 'moderator');
276
277$router->get('/suggest/:id', function ($id) use ($loader, $twig) {
278 ControllerFactory::getController("dashboard", $loader, $twig)->call("getSuggestionInfo", ["id" => $id]);
279 exit;
280}, 'moderator');
281
282$router->get('/ranking', function () use ($loader, $twig) {
283 ControllerFactory::getController("ranking", $loader, $twig)->call("showRanking");
284});
285
286$router->post('/player/informations', function () use ($loader, $twig) {
287 ControllerFactory::getController("profile", $loader, $twig)->call("getPlayerInformations", [
288 "searchBy" => $_POST["searchBy"],
289 "playerUuid" => $_POST["data"]
290 ]);
291 exit;
292});
293
294$router->post('/game/:code/end', function ($code) use ($loader, $twig) {
295 ControllerFactory::getController("game", $loader, $twig)->call("endGame", [
296 "code" => $code,
297 "token" => $_POST['token'] ?? "",
298 "results" => json_decode($_POST['results'] ?? "", true),
299 ]);
300 exit;
301});
302
303$router->put('/profile/update-username/:username', function ($username) use ($loader, $twig) {
304 ControllerFactory::getController("profile", $loader, $twig)->call("updateUsername", ["username" => $username]);
305 exit;
306}, 'player');
307
308$router->post('/profile/update-email', function () use ($loader, $twig) {
309 ControllerFactory::getController("profile", $loader, $twig)->call("updateEmail", ["email" => $_POST['newEmail']]);
310 exit;
311}, 'player');
312
313$router->get('/suggests', function () use ($loader, $twig) {
314 ControllerFactory::getController("dashboard", $loader, $twig)->call("getAllSuggestionsWaiting");
315 exit;
316}, 'moderator');
317
318$router->get('/reports', function () use ($loader, $twig) {
319 ControllerFactory::getController("dashboard", $loader, $twig)->call("getAllReportsWaiting");
320 exit;
321}, 'moderator');
322
323$router->post('/report', function () use ($loader, $twig) {
324 ControllerFactory::getController("profile", $loader, $twig)->call("reportPlayer", [
325 "object" => match (strtolower($_POST['object'])) {
326 "langage" => ReportObject::LANGUAGE,
327 "spam" => ReportObject::SPAM,
328 "lien" => ReportObject::LINKS,
329 "fairplay" => ReportObject::FAIRPLAY,
330 "autres" => ReportObject::OTHER
331 },
332 "description" => $_POST['description'],
333 "reportedUuid" => $_POST['reportedUuid'],
334 "senderUuid" => $_SESSION['uuid']
335 ]);
336 exit;
337}, 'player');
338
339$router->get('/report/:reportId', function ($reportId) use ($loader, $twig) {
340 ControllerFactory::getController("dashboard", $loader, $twig)->call("getReportInformations", ["reportId" => $reportId]);
341 exit;
342}, 'moderator');
343
344$router->post('/penalty', function () use ($loader, $twig) {
345 ControllerFactory::getController("profile", $loader, $twig)->call("penalizePlayer", [
346
347 "createdBy" => $_SESSION['uuid'],
348 "penalizedUuid" => $_POST['penalizedUuid'],
349 "reason" => $_POST['reason'],
350 "duration" => $_POST['duration'],
351 "durationType" => $_POST['durationType'],
352 "penaltyType" => match ($_POST['penaltyType']) {
353 "muted" => PenaltyType::MUTED,
354 "banned" => PenaltyType::BANNED,
355 default => null
356 },
357 "reportId" => $_POST['reportId']
358 ]);
359 exit;
360}, 'moderator');
361
362$router->post('/game/muted-player', function () use ($loader, $twig) {
363 ControllerFactory::getController("game", $loader, $twig)->call("isPlayerMuted", [
364 "playerUsername" => $_POST['username'],
365 ]);
366 exit;
367}, 'player');
Gestion de l'affichage des erreurs.
Classe Router permettant de gérer les routes.
Definition Router.php:23
ReportObject
Les 4 thèmes pour les signalements.
PenaltyType
Enumération des types de sanctions.
global $twig
Definition routes.php:11
global $loader
Definition routes.php:11
$router
Definition routes.php:21