From 86dc57a2233aa3d2c984bc3e46ad4ee234f6b28e Mon Sep 17 00:00:00 2001
From: "narindra.rajohnso" <narindra-hasimanjaka-david.rajohnson@etu.hesge.ch>
Date: Mon, 12 Jun 2023 18:03:47 +0200
Subject: [PATCH] edit to have logic route API

---
 API/src/database/database.sqlite | Bin 20480 -> 20480 bytes
 API/src/express/Server.ts        |   6 ++--
 API/src/routes/router-admin.ts   |  50 +++++++++++++++----------------
 API/src/routes/router-gamer.ts   |   5 +---
 API/src/routes/router-guest.ts   |   8 ++---
 5 files changed, 31 insertions(+), 38 deletions(-)

diff --git a/API/src/database/database.sqlite b/API/src/database/database.sqlite
index 30bcb3756e4ba1b24718dc0f5798be127ea4b8fb..ab49992f314c8ca671c6eceac1143c7dea7146dc 100644
GIT binary patch
delta 576
zcmZozz}T>Wae_2s*F+g-#;%PCOZa8Dx!4%_mH68E`*`2-hVV%9?B?#_X5=d8V&j~(
zv9XG?o@YBlj<m3(s;H-DUTV3yMYeHXQEGZ#N@7`2Vpe`eUP)?ki9<<dNvU3PMrm<s
zk&%Isv95ucuAz~Fp^=q|iIs_^o|&<+g0_Kym4N|%*?eA3Nku_%O>s}p#FX63Jj25B
zxYVMOs?yB-g3>&&5STE8SqSE#nQ3TcY^rB$XolTJG}+DNQumlRMcFvzQ$>Y!MJLC}
z`mum~F?pk`ia6X8W>!XqdWPmk5F<CgmX&0Z;pWd};Lqj1%>Rym2mc-Z+5AoX>-a19
zkMZ~L_iR>FaOM}~U&X)$4l+J2W=Te{Qw@11SLiQc;z-)qD8*5~n!&zNkYC!<(>Xsk
zH#M(BAvrZCQ6V?6C^;ilp+q+`$39vqAhAfH<S+vRL!G@dzc5~<zKKQ2N;*nj`NgRP
z8A>`zL7B-JiA5<&v4(#6xoCl8YGr7usb^qn4)GFtyjXz3(7@CZD!ciCg}gYUAOL;%
Bo4o)4

delta 292
zcmZozz}T>Wae_2s^F$eE#^#L)OZcU@xXKy$mH68E`*`2-hVV%9?B?#_X5=d8ys)ux
zE2qFj=~QuHMNv=B!t$!(3=7lA7iDzn%kndG5|i@t$`Xsq97<C4k~2z+Q;UoYjEr>+
zOm&S+6$~t`j7_bKjPxumOcb;Y46F<c@XInVFieqTU|^Ukn<_4<3bHOGC9SxTorhCA
zRg_;=)YG#hwYbE%&^0$X&3kj7)Nv+GF*Z*5R8e7F@yT(reyoWpxtV#BH^{0?-X<%t
z`K_!tlN1+!1q1(O{&)O4`0wz~=5OL($6vvJjK7C}{$@dkV19P~9}GN&<yDg_^p|XG
OJi@X0frY#{qW}QVmQ#HI

diff --git a/API/src/express/Server.ts b/API/src/express/Server.ts
index e45eed1..329c81d 100644
--- a/API/src/express/Server.ts
+++ b/API/src/express/Server.ts
@@ -43,9 +43,9 @@ class Server {
         //TODO: Add routes and middlewares
         const routes = [
             { path: '/', router: BaseRoutes},
-            { path: '/guest', router: routerGuest },
-            { path: '/gamer', router: routerGamer },
-            { path: '/admin', router: routerAdmin }
+            { path: '/guests', router: routerGuest },
+            { path: '/users', router: routerGamer },
+            { path: '/admins', router: routerAdmin }
         ];
         this.backend.use(express.json())
         this.backend.use((req, res, next) => {
diff --git a/API/src/routes/router-admin.ts b/API/src/routes/router-admin.ts
index a8a1842..0a96a17 100644
--- a/API/src/routes/router-admin.ts
+++ b/API/src/routes/router-admin.ts
@@ -20,7 +20,7 @@ const router: express.Router = express.Router();
 
 
 
-router.get('/:admin/list-users', checkExistingUser, verifyToken, async (req: express.Request, res: express.Response) => {
+router.get('/:admin/users', checkExistingUser, verifyToken, async (req: express.Request, res: express.Response) => {
     try {
         const users = await Database.getAllUsers();
         res.status(StatusCodes.OK).json({users});
@@ -29,7 +29,7 @@ router.get('/:admin/list-users', checkExistingUser, verifyToken, async (req: exp
     }
 });
 
-router.get('/:admin/list-questions',  checkExistingUser, verifyToken, async (req: express.Request, res: express.Response) => {
+router.get('/:admin/questions',  checkExistingUser, verifyToken, async (req: express.Request, res: express.Response) => {
     try {
         const questions = await Database.getAllQuestions();
         questions.forEach(q => {
@@ -44,11 +44,11 @@ router.get('/:admin/list-questions',  checkExistingUser, verifyToken, async (req
     }
 });
 
-router.post('/:admin/create-user-account', checkExistingUser, checkUserFields, verifyToken, (req: express.Request, res: express.Response) => {
+router.post('/:admin/users', checkExistingUser, checkUserFields, verifyToken, (req: express.Request, res: express.Response) => {
     createAccountCheck(req, res);
 });
 
-router.post('/:admin/create-question', checkExistingUser, checkQuestionFields, verifyToken, async (req: express.Request, res: express.Response) => {
+router.post('/:admin/questions', checkExistingUser, checkQuestionFields, verifyToken, async (req: express.Request, res: express.Response) => {
     const data = req.body;
     const correctResponse: string = data.possibleResponse[data.correctResponse];
     if (correctResponse !== undefined) {
@@ -74,13 +74,13 @@ router.post('/:admin/create-question', checkExistingUser, checkQuestionFields, v
     }
 });
 
-router.put('/:admin/update-user-account', checkExistingUser, checkUsernameField, verifyToken, async (req: express.Request, res: express.Response) => {
+router.put('/:admin/users/:username', checkExistingUser, checkUsernameField, verifyToken, async (req: express.Request, res: express.Response) => {
     const data=req.body;
-    const username = data.username;
+    const username = req.params.username;
     try{
         const user = await User.findOne({where: {username}});
         if(user){
-            if(req.params.admin === data.username && data.accountType!==undefined){
+            if(req.params.admin === username && data.accountType!==undefined){
                 res.status(StatusCodes.NOT_ACCEPTABLE).send(`Edit your account type is not possible`);
                 return;
             }
@@ -88,14 +88,14 @@ router.put('/:admin/update-user-account', checkExistingUser, checkUsernameField,
                 const nbUserUpdated=await Database.updateUserAccount(data.username, data.password, data.firstname, data.lastname, data.email, data.accountType);
                 if(nbUserUpdated){
                     res.status(StatusCodes.OK).json({
-                        message: `User ${data.username} updated`
+                        message: `User ${username} updated`
                     });
                 }
             }catch(error){
                 res.status(StatusCodes.BAD_REQUEST).json({error: `An error occured: ${error}`});
             }
         }else{
-            res.status(StatusCodes.NOT_FOUND).send(`The user ${data.username} not exist`);
+            res.status(StatusCodes.NOT_FOUND).send(`The user ${username} not exist`);
         }
     }catch (error){
         res.status(StatusCodes.BAD_REQUEST).json({error: `An error occured: ${error}`});
@@ -105,9 +105,9 @@ router.put('/:admin/update-user-account', checkExistingUser, checkUsernameField,
 
 });
 
-router.put('/:admin/update-question', checkExistingUser,checkIdField, verifyToken, async (req: express.Request, res: express.Response) => {
+router.put('/:admin/questions/:question_id', checkExistingUser,checkIdField, verifyToken, async (req: express.Request, res: express.Response) => {
     const data=req.body;
-    const id = data.id;
+    const id = req.params.question_id;
     try{
         const question = await Question.findOne({where: {id}});
         if(question){
@@ -131,16 +131,16 @@ router.put('/:admin/update-question', checkExistingUser,checkIdField, verifyToke
 
 
 
-router.delete('/:admin/delete-user-account', checkExistingUser, checkUsernameField, verifyToken, async (req: express.Request, res: express.Response) => {
-    let data=req.body
-    if(req.params.admin !== data.username) {
+router.delete('/:admin/users/:username', checkExistingUser, checkUsernameField, verifyToken, async (req: express.Request, res: express.Response) => {
+    let username=req.params.username;
+    if(req.params.admin !== username) {
         try{
-            let userDelete=await Database.deleteUser(data.username);
+            let userDelete=await Database.deleteUser(username);
             console.log(`user delete= ${userDelete}`)
             if(userDelete === 1){
-                res.status(StatusCodes.OK).json({message: `The user ${data.username} is successfully deleted`});
+                res.status(StatusCodes.OK).json({message: `The user ${username} is successfully deleted`});
             }else{
-                res.status(StatusCodes.NOT_FOUND).send(`User "${data.username}" not exist`);
+                res.status(StatusCodes.NOT_FOUND).send(`User "${username}" not exist`);
             }
 
         }catch(error){
@@ -153,15 +153,15 @@ router.delete('/:admin/delete-user-account', checkExistingUser, checkUsernameFie
 
 });
 
-router.delete('/:admin/delete-question', checkExistingUser, checkIdField, verifyToken, async (req: express.Request, res: express.Response) => {
-    let data = req.body
+router.delete('/:admin/questions/:question_id', checkExistingUser, checkIdField, verifyToken, async (req: express.Request, res: express.Response) => {
+    let questionId=parseInt(req.params.question_id);
     try {
-        let questionDelete = await Database.deleteQuestion(data.id);
+        let questionDelete = await Database.deleteQuestion(questionId);
         console.log(`question delete= ${questionDelete}`)
         if (questionDelete === 1) {
-            res.status(StatusCodes.OK).json({message: `The question ${data.id} is successfully deleted`});
+            res.status(StatusCodes.OK).json({message: `The question ${questionId} is successfully deleted`});
         } else {
-            res.status(StatusCodes.NOT_FOUND).send(`Question "${data.id}" not exist`);
+            res.status(StatusCodes.NOT_FOUND).send(`Question "${questionId}" not exist`);
         }
 
     } catch (error) {
@@ -172,9 +172,9 @@ router.delete('/:admin/delete-question', checkExistingUser, checkIdField, verify
 
 });
 
-router.post('/:admin/get-user', checkExistingUser, verifyToken, async (req: express.Request, res: express.Response) => {
-    const data = req.body
-    let user=await Database.infoUser(data.username);
+router.get('/:admin', checkExistingUser, verifyToken, async (req: express.Request, res: express.Response) => {
+    const username = req.params.admin
+    let user=await Database.infoUser(username);
     user.dataValues.password="CONFIDENTIAL!!!"
     if(user){
         res.status(StatusCodes.OK).json({info_user: user.dataValues});
diff --git a/API/src/routes/router-gamer.ts b/API/src/routes/router-gamer.ts
index 4159296..b4c9e5f 100644
--- a/API/src/routes/router-gamer.ts
+++ b/API/src/routes/router-gamer.ts
@@ -5,11 +5,8 @@ import {checkExistingUser, TokenRequest, verifyToken} from "./middleware";
 
 const router: express.Router = express.Router();
 
-router.get('/', (req: express.Request, res: express.Response) => {
-    res.status(StatusCodes.OK).json({ message: 'Gamers route' })
-});
 
-router.get('/:username', checkExistingUser, verifyToken, (req: TokenRequest, res: express.Response) => {
+router.get('/users/:username', checkExistingUser, verifyToken, (req: TokenRequest, res: express.Response) => {
     res.status(StatusCodes.OK).json({access_user: req.user});
 });
 
diff --git a/API/src/routes/router-guest.ts b/API/src/routes/router-guest.ts
index 3272887..e8bf882 100644
--- a/API/src/routes/router-guest.ts
+++ b/API/src/routes/router-guest.ts
@@ -10,19 +10,15 @@ const jwt = require('jsonwebtoken');
 
 const router: express.Router = express.Router();
 
-router.get('/', (req: express.Request, res: express.Response) => {
-    res.status(StatusCodes.OK).json({ message: 'Guests route' })
-});
-
 
 
 
 
-router.post('/create-account', checkUserFields, (req: express.Request, res: express.Response) => {
+router.post('/users', checkUserFields, (req: express.Request, res: express.Response) => {
     createAccountCheck(req, res);
 });
 
-router.post('/:username', checkExistingUser, async (req: express.Request, res: express.Response) => {
+router.post('/users/:username', checkExistingUser, async (req: express.Request, res: express.Response) => {
     const data = req.body
     let user=await Database.infoUser(req.params.username);
     if(user){
-- 
GitLab