diff --git a/cryptide_project/src/Pages/Profile.tsx b/cryptide_project/src/Pages/Profile.tsx index f8e2be4..e0efd2e 100644 --- a/cryptide_project/src/Pages/Profile.tsx +++ b/cryptide_project/src/Pages/Profile.tsx @@ -7,6 +7,7 @@ import { delay, update } from 'lodash'; import { socket } from '../SocketConfig'; import AuthService from '../services/AuthService'; + /* Style */ import './Profile.css' import Edit from "../res/icon/edit-pen.png" @@ -45,7 +46,8 @@ const Profile = () => { const onUsernameChange = (newUsername) => { console.log("nouveau pseudo : " + newUsername) if(user?.pseudo != null){ - user.pseudo = newUsername; + SessionService.UpdatePseudo(user.pseudo, newUsername) + //user.pseudo = newUsername; } } diff --git a/cryptide_project/src/server/controllers/SessionController.js b/cryptide_project/src/server/controllers/SessionController.js index 3c5350e..f536a0b 100644 --- a/cryptide_project/src/server/controllers/SessionController.js +++ b/cryptide_project/src/server/controllers/SessionController.js @@ -27,6 +27,35 @@ class SessionController { await db.disconnect(); } } + + static async UpdatePseudo(req, res){ + const db = new DatabaseService(); + + try{ + await db.connect(); + + const user = db.getUserByPseudo(req.body.pseudo); + if (!user) { + res.status(200).json({ error: "true", message: 'User not found' }); + return; + } + + await db.updatePseudo(user.idUser, req.body.newPseudo); //* update + + const updatedUser = db.getUserByPseudo(req.body.newPseudo); + + req.session.user.pseudo = updatedUser.pseudo; + + res.status(200).json({ user: req.session.user }); //verif rep + } + catch(error){ + console.error(error); + res.status(500).json({ error: 'Erreur lors de la modification du pseudo de l\'utilisateur.' }); + } + finally{ + await db.disconnect(); + } + } } module.exports = SessionController; \ No newline at end of file diff --git a/cryptide_project/src/server/db/socialgraph.db b/cryptide_project/src/server/db/socialgraph.db index be47d2d..35ebe49 100644 Binary files a/cryptide_project/src/server/db/socialgraph.db and b/cryptide_project/src/server/db/socialgraph.db differ diff --git a/cryptide_project/src/server/routes/AuthRoutes.js b/cryptide_project/src/server/routes/AuthRoutes.js index 37458bb..a0da069 100644 --- a/cryptide_project/src/server/routes/AuthRoutes.js +++ b/cryptide_project/src/server/routes/AuthRoutes.js @@ -11,5 +11,6 @@ router.delete('/auth/delAccount', AuthController.delAccount) // Routes pour les sessions router.get('/session', SessionController.getUserInformation); +router.put('/session/updatePseudo', SessionController.UpdatePseudo); module.exports = router; diff --git a/cryptide_project/src/server/services/DatabaseService.js b/cryptide_project/src/server/services/DatabaseService.js index 1849a97..3888a87 100644 --- a/cryptide_project/src/server/services/DatabaseService.js +++ b/cryptide_project/src/server/services/DatabaseService.js @@ -172,6 +172,19 @@ class DatabaseService { }); }); } + + async updatePseudo(userId, newPseudo){ + return new Promise((resolve, reject) => { + this.client.run('UPDATE users SET pseudo = ? WHERE idUser = ?', newPseudo, userId, (err, result) => { + if(err){ + reject(err); + } + else{ + resolve(result); + } + }); + }); + } } module.exports = DatabaseService; \ No newline at end of file diff --git a/cryptide_project/src/services/SessionService.tsx b/cryptide_project/src/services/SessionService.tsx index 46340ab..49cf8e9 100644 --- a/cryptide_project/src/services/SessionService.tsx +++ b/cryptide_project/src/services/SessionService.tsx @@ -23,7 +23,33 @@ class SessionService { throw error; } } + + static async UpdatePseudo(pseudo : string, newPseudo : string) { + try { + const response = await fetch(ADRESSE_DBSERVER + '/session/updatePseudo', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + pseudo, + newPseudo + }), + credentials: 'include', + }); + + if (response.ok) { + const result = await response.json(); + return result; + } else { + const errorResponse = await response.json(); + throw new Error(errorResponse.error); + } + } catch (error) { + console.error(error); + throw error; + } + } } - - export default SessionService; - \ No newline at end of file + +export default SessionService;