diff --git a/cryptide_project/server/server.js b/cryptide_project/server/server.js index ddb6235..a7e6c5b 100644 --- a/cryptide_project/server/server.js +++ b/cryptide_project/server/server.js @@ -124,7 +124,7 @@ io.on('connection', (socket) => { socket.on("reset graph", (id) => { io.to(id).emit("reset graph") - }) + }) socket.on("end game", (winnerIndex, room) =>{ io.to(room).emit("end game", winnerIndex) diff --git a/cryptide_project/src/AdressConfig.ts b/cryptide_project/src/AdressConfig.ts new file mode 100644 index 0000000..b46e98b --- /dev/null +++ b/cryptide_project/src/AdressConfig.ts @@ -0,0 +1,7 @@ +const ADRESSE_WEBSERVER = "http://localhost:3002" + +const ADRESSE_DBSERVER = "http://localhost:3003" + +const ADRESSE_WEBSITE = "" + +export {ADRESSE_DBSERVER, ADRESSE_WEBSERVER, ADRESSE_WEBSITE} \ No newline at end of file diff --git a/cryptide_project/src/Components/GraphContainer.tsx b/cryptide_project/src/Components/GraphContainer.tsx index 62c9027..10bc725 100644 --- a/cryptide_project/src/Components/GraphContainer.tsx +++ b/cryptide_project/src/Components/GraphContainer.tsx @@ -295,6 +295,12 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS }); } + socket.on("reset graph", () => { + console.log("reset graph") + initialOptions.physics.enabled = true + network.setOptions(initialOptions) + }) + if (!solo){ socket.on("asked all", (id) =>{ const pers = personNetwork.getPersons().find((p) => p.getId() == id) @@ -316,11 +322,6 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS networkData.nodes.update({id: node.id, opacity: 1}) }); }) - - socket.on("reset graph", () => { - initialOptions.physics.enabled = true - network.setOptions(initialOptions) - }) socket.on("node checked",(id, works, askedIndex, newPlayerIndex, socketId) => { const node = nodes.get().find((n) => id == n.id) diff --git a/cryptide_project/src/Components/PlayerList.tsx b/cryptide_project/src/Components/PlayerList.tsx index 6834eea..3dc36d7 100644 --- a/cryptide_project/src/Components/PlayerList.tsx +++ b/cryptide_project/src/Components/PlayerList.tsx @@ -25,7 +25,7 @@ const PlayerList: React.FC = ({ players, playerTouched, setPlay { //@ts-ignore players.map((player, index) => ( - player.id!=socket.id && + player.id!=socket.id && )) } diff --git a/cryptide_project/src/Components/ProfilePDP.tsx b/cryptide_project/src/Components/ProfilePDP.tsx index 7395740..aa1f004 100644 --- a/cryptide_project/src/Components/ProfilePDP.tsx +++ b/cryptide_project/src/Components/ProfilePDP.tsx @@ -38,9 +38,9 @@ const ProfilePDP = () => { )}
- upload + upload {/*
Cliquer ici pour ajouter une image
*/} -

Taille recommandée : 100px

+ {/*

Taille recommandée : 100px

*/}
diff --git a/cryptide_project/src/ImageHelper.ts b/cryptide_project/src/ImageHelper.ts new file mode 100644 index 0000000..7400876 --- /dev/null +++ b/cryptide_project/src/ImageHelper.ts @@ -0,0 +1,14 @@ +async function loadImageAsync(url: string): Promise { + try { + const response = await fetch(url); + const blob = await response.blob(); + + // Faire quelque chose avec le blob, par exemple, créer une URL blob + const blobUrl = URL.createObjectURL(blob); + return blobUrl + } catch (error) { + throw new Error("Erreur lors du chargement de l'image :"); + } + } + +export {loadImageAsync} \ No newline at end of file diff --git a/cryptide_project/src/Pages/Home.tsx b/cryptide_project/src/Pages/Home.tsx index 1c16b9e..6016578 100644 --- a/cryptide_project/src/Pages/Home.tsx +++ b/cryptide_project/src/Pages/Home.tsx @@ -7,6 +7,9 @@ import { useTheme } from '../Style/ThemeContext'; import { Link } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import ButtonImgNav from '../Components/ButtonImgNav'; +import defaultImg from "../res/img/Person.png" +import {loadImageAsync} from "../ImageHelper" + // @ts-ignore function Home() { @@ -18,11 +21,16 @@ function Home() { if (user == null){ manager.userService.fetchUserInformation().then(([user, loggedIn]) =>{ if (user!=null){ - setUserData(user) if (loggedIn){ login() + setUserData(user) + } + else{ + loadImageAsync(defaultImg).then((blob) => { + user.profilePicture=blob + setUserData(user) + }) } - console.log('isLoggedIn : ', isLoggedIn); } }) } diff --git a/cryptide_project/src/Pages/Lobby.tsx b/cryptide_project/src/Pages/Lobby.tsx index 3dfab34..2ad4ce3 100644 --- a/cryptide_project/src/Pages/Lobby.tsx +++ b/cryptide_project/src/Pages/Lobby.tsx @@ -1,4 +1,6 @@ import React, { useEffect, useState } from 'react'; + +/* Style */ import './Lobby.css'; import { useTheme } from '../Style/ThemeContext'; @@ -8,25 +10,37 @@ import PersonImg from '../res/img/Person.png'; import param from '../res/icon/param.png'; import cible from '../res/icon/cible.png'; +import defaultImg from "../res/img/Person.png" + /* Component */ import ButtonImgNav from '../Components/ButtonImgNav'; + import { io } from 'socket.io-client'; import { Link } from 'react-router-dom'; + +/* Context */ +import { useGame } from '../Contexts/GameContext'; +import { useAuth } from '../Contexts/AuthContext'; + +/* Model */ import PersonNetwork from '../model/PersonsNetwork'; import Person from '../model/Person'; import GameCreator from '../model/GameCreator'; -import { useGame } from '../Contexts/GameContext'; -import JSONParser from '../JSONParser'; import Indice from '../model/Indices/Indice'; -import { useNavigate } from 'react-router-dom'; -import { socket } from "../SocketConfig"; -import { random } from 'lodash'; +import JSONParser from '../JSONParser'; import Player from '../model/Player'; import EasyBot from '../model/EasyBot'; import Bot from '../model/Bot'; import User from '../model/User'; -import { useAuth } from '../Contexts/AuthContext'; +import {loadImageAsync} from "../ImageHelper" + +/* nav */ +import { useNavigate } from 'react-router-dom'; + +/* serv */ +import { socket } from "../SocketConfig"; import SessionService from '../services/SessionService'; +import { random } from 'lodash'; let gameStarted = false @@ -34,7 +48,7 @@ let gameStarted = false function Lobby() { const theme=useTheme(); const navigate = useNavigate(); - + const { indices, setIndicesData, indice, setIndiceData, person, setPersonData, personNetwork, setPersonNetworkData, players, setPlayersData, setActualPlayerIndexData, setTurnPlayerIndexData, setRoomData } = useGame(); @@ -48,6 +62,8 @@ function Lobby() { socket.emit("lobby joined", room, new EasyBot("botId" + Math.floor(Math.random() * 1000), "Bot" + Math.floor(Math.random() * 100), "").toJson()) } + + useEffect(() => { if (first){ first=false @@ -55,9 +71,15 @@ function Lobby() { if (user == null){ manager.userService.fetchUserInformation().then(([u, loggedIn]) => { if (u!=null){ - setUserData(u) if (loggedIn){ login() + setUserData(u) + } + else{ + loadImageAsync(defaultImg).then((blob) => { + u.profilePicture=blob + setUserData(u) + }) } socket.emit("lobby joined", room, u.toJson()) } @@ -108,6 +130,7 @@ function Lobby() { for (const p of tab){ tmpTab.push(JSONParser.JSONToPlayer(p)) } + console.log(tmpTab) setPlayersData(tmpTab) }) diff --git a/cryptide_project/src/Pages/Play.tsx b/cryptide_project/src/Pages/Play.tsx index ee2526e..03c5ddf 100644 --- a/cryptide_project/src/Pages/Play.tsx +++ b/cryptide_project/src/Pages/Play.tsx @@ -11,8 +11,6 @@ import { useTheme } from '../Style/ThemeContext'; import ButtonImgNav from "../Components/ButtonImgNav"; /* Img */ -import Person from '../res/img/Person.png'; - /* Icon */ import { socket } from '../SocketConfig'; import { useNavigate } from 'react-router-dom'; @@ -20,18 +18,21 @@ import GameCreator from '../model/GameCreator'; import { useGame } from '../Contexts/GameContext'; import ScoreBoard from '../Components/ScoreBoard'; +import defaultImg from "../res/img/Person.png" + /* Types */ import User from '../model/User'; import EnigmeDuJourCreator from '../model/EnigmeDuJourCreator'; import Stub from '../model/Stub'; import SessionService from '../services/SessionService'; +import { loadImageAsync } from '../ImageHelper'; function Play() { let first = true const theme=useTheme() - const {isLoggedIn, login, user, setUserData } = useAuth(); + const {isLoggedIn, login, user, setUserData, manager } = useAuth(); const {setDailyEnigmeData} = useGame() useEffect(() => { @@ -81,6 +82,26 @@ function Play() { const { setIndicesData, setPersonData, setPersonNetworkData } = useGame(); + useEffect(() => { + + if (user == null){ + manager.userService.fetchUserInformation().then(([user, loggedIn]) =>{ + if (user!=null){ + if (loggedIn){ + login() + setUserData(user) + } + else{ + loadImageAsync(defaultImg).then((blob) => { + user.profilePicture=blob + setUserData(user) + }) + } + } + }) + } + }, [isLoggedIn]); + const [room, setRoom] = useState(null); const navigate = useNavigate(); @@ -146,7 +167,7 @@ function Play() { {/* */} - + {/* */}
diff --git a/cryptide_project/src/Pages/Profile.css b/cryptide_project/src/Pages/Profile.css index a83adb7..3090ae4 100644 --- a/cryptide_project/src/Pages/Profile.css +++ b/cryptide_project/src/Pages/Profile.css @@ -1,5 +1,6 @@ .mainContainer{ display: flex; + /* flex-direction: column; */ justify-content: center; align-items: center; margin: 50px; @@ -20,6 +21,8 @@ min-height: 250px; } +/*Lpart*/ + .imgContainer{ border: 5px solid black; border-radius: 50px; @@ -28,6 +31,60 @@ +/*Rpart*/ + +.Rpart{ + + min-width: 40%; + min-height: 250px; + margin: 20px; + padding: 20px; + + background-color: white; + + border: solid 1px whitesmoke; + border-radius: 15px; +} + + +.username-display{ + display: flex; +} + +.editbutton{ + border-color: white; + background-color: white; + border: none; + + margin-left: 15px; + height: 25px; + width: 25px; +} +.inputpseudo{ + display: 'flex'; + justify-content: 'flex-start'; + align-items: 'center'; + flex-direction: 'row'; + + width: 20vw; + padding: 5; + + border:none; + border-bottom: solid 2px gray; + border-radius: 5; + + font-size: 40px; +} + +.bottom{ + display: flex; + flex-direction: column; + justify-content: end; + align-items: end; + + height: 100px; +} + /*File upload*/ .parent { /* width: 250px; */ @@ -43,8 +100,9 @@ /* padding: 1.5rem; */ position: relative; cursor: pointer; - max-width: 100px; - max-height: 50px; + width: 100px; + height: 50px; + } .file-upload p { font-size: 0.5rem; diff --git a/cryptide_project/src/Pages/Profile.tsx b/cryptide_project/src/Pages/Profile.tsx index 463e1fd..1e96b92 100644 --- a/cryptide_project/src/Pages/Profile.tsx +++ b/cryptide_project/src/Pages/Profile.tsx @@ -1,30 +1,193 @@ import React, { useEffect, useState } from 'react'; import ProfilePDP from '../Components/ProfilePDP'; -import './Profile.css' - - import SessionService from '../services/SessionService'; import { PlayerProps } from '../types/Player'; -import { update } from 'lodash'; -import User from '../model/User'; +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" +import Coche from '../res/icon/coche.png' +import Cancel from '../res/icon/cancel.png' + +/* Model */ +import User from '../model/User'; + +/* Context */ import { useAuth } from '../Contexts/AuthContext'; +/* Boostrap */ +import Button from 'react-bootstrap/Button'; +import Alert from 'react-bootstrap/Alert'; +import Modal from 'react-bootstrap/Modal'; +import Form from 'react-bootstrap/Form'; +import { useNavigate } from 'react-router-dom'; //@ts-ignore const Profile = () => { + const navigate = useNavigate(); //let player; - const {user} = useAuth() + const {user, logout} = useAuth() + + // let pseudoNotNull; + // if(user?.pseudo != null){ + // pseudoNotNull = user.pseudo; + // } + + const [editingUsername, setEditingUsername] = useState(false); + const [newUsername, setNewUsername] = useState(user?.pseudo); + + //@ts-ignore + const onUsernameChange = (newUsername) => { + if(user?.pseudo != null){ + SessionService.UpdatePseudo(user.pseudo, newUsername) + user.pseudo = newUsername; + } + } + + const handleUsernameChange = () => { + // Maj du pseudo + onUsernameChange(newUsername); - //! useeffect pour l'instant, il faudra voir pour changer la facons de prendre une session + // Désactiver le mode d'édition + setEditingUsername(false); + }; + + //* Gestion Modal de suppression : + const [showDeleteModal, setShowDeleteModal] = useState(false); + + const handleShowDeleteModal = () => { + setShowDeleteModal(true); + }; + + const handleCloseDeleteModal = () => { + setShowDeleteModal(false); + }; + + //* Confirmation avec la phrase : + const [confirmationPhrase, setConfirmationPhrase] = useState(''); + + const [showWrong, setShowWrong] = useState(false); + + //@ts-ignore + const handleConfirmationPhraseChange = (e) => { + setConfirmationPhrase(e.target.value); + }; + + const handleDeleteAccount = () => { + // Verification de la phrase + if (confirmationPhrase.toLowerCase() === 'supprimer mon compte') { + console.log('Compte supprimé !'); + console.log(user); + + if(user!= null){ + const pseudo = user.pseudo; + AuthService.delAccount(pseudo); + AuthService.logout(); + logout(); + } + else{ + console.error("l'utilisateur ne peut pas être null") + } + handleCloseDeleteModal(); + + navigate("/play") + + } else { + console.error('Phrase de confirmation incorrecte.'); + setShowWrong(true); + setTimeout(async () => { + setShowWrong(false); + }, 3000); + } + }; + + return ( + <> +

Mon Compte

- -

{user?.pseudo}

+
+ +
+
+ {editingUsername ? ( +
+ setNewUsername(e.target.value)} + /> + + +
+ ) : ( +
+

{user?.pseudo}

+ +
+ ) + } +
+ {!editingUsername ? ( + + ) : ( + + Vous êtes en mode "édition". + + )} +
+ <> + + + + + Confirmation de suppression + + +

+ Pour confirmer la suppression de votre compte, veuillez + entrer la phrase : "supprimer mon compte". +

+ + { + showWrong && + + La phrase de confirmation est incorrecte. + + } +
+ + + + +
+ +
+ +
+ ); }; diff --git a/cryptide_project/src/SocketConfig.ts b/cryptide_project/src/SocketConfig.ts index 7e48093..4db4397 100644 --- a/cryptide_project/src/SocketConfig.ts +++ b/cryptide_project/src/SocketConfig.ts @@ -1,5 +1,5 @@ import { io } from "socket.io-client"; -import { ADRESSE_WEBSERVER } from "./adressConfig"; +import { ADRESSE_WEBSERVER } from "./AdressConfig"; const socket = io(ADRESSE_WEBSERVER); diff --git a/cryptide_project/src/adressConfig.ts b/cryptide_project/src/adressConfig.ts index 8d49e11..b46e98b 100644 --- a/cryptide_project/src/adressConfig.ts +++ b/cryptide_project/src/adressConfig.ts @@ -2,6 +2,6 @@ const ADRESSE_WEBSERVER = "http://localhost:3002" const ADRESSE_DBSERVER = "http://localhost:3003" -const ADRESSE_WEBSITE = "http://localhost:3000" +const ADRESSE_WEBSITE = "" export {ADRESSE_DBSERVER, ADRESSE_WEBSERVER, ADRESSE_WEBSITE} \ No newline at end of file diff --git a/cryptide_project/src/model/User.tsx b/cryptide_project/src/model/User.tsx index 66573d8..d112003 100644 --- a/cryptide_project/src/model/User.tsx +++ b/cryptide_project/src/model/User.tsx @@ -1,16 +1,12 @@ import Player from "./Player"; -import defaultpdp from "../res/img/Person.png" - +import defaultImg from "../res/img/Person.png" class User extends Player{ public soloStats: any public onlineStats: any constructor(id: string, pseudo: string, profilePicture: string, soloStats: any, onlineStats: any){ - if (profilePicture == ""){ - profilePicture = defaultpdp - } - super(id, pseudo, profilePicture) + super(id, pseudo, profilePicture || defaultImg) this.soloStats=soloStats this.onlineStats=onlineStats } @@ -20,6 +16,7 @@ class User extends Player{ return { type: "User", id: this.id, + profilePicture: this.profilePicture, pseudo: this.pseudo, soloStats: this.soloStats, onlineStats: this.onlineStats diff --git a/cryptide_project/src/res/icon/cancel.png b/cryptide_project/src/res/icon/cancel.png new file mode 100644 index 0000000..1181afb Binary files /dev/null and b/cryptide_project/src/res/icon/cancel.png differ diff --git a/cryptide_project/src/res/icon/coche.png b/cryptide_project/src/res/icon/coche.png new file mode 100644 index 0000000..6ff1304 Binary files /dev/null and b/cryptide_project/src/res/icon/coche.png differ diff --git a/cryptide_project/src/res/icon/edit-pen.png b/cryptide_project/src/res/icon/edit-pen.png new file mode 100644 index 0000000..2a41928 Binary files /dev/null and b/cryptide_project/src/res/icon/edit-pen.png differ diff --git a/cryptide_project/src/server/controllers/AuthController.js b/cryptide_project/src/server/controllers/AuthController.js index 5d5edc4..3f3afa9 100644 --- a/cryptide_project/src/server/controllers/AuthController.js +++ b/cryptide_project/src/server/controllers/AuthController.js @@ -5,7 +5,7 @@ const bcrypt = require('bcrypt'); const sqlite3 = require('sqlite3'); class AuthController { - static async signUp(req, res) { + static async signUp(req, res) { const databaseService = new DatabaseService(); const pseudo = req.body.pseudo; const date = new Date(); @@ -98,17 +98,40 @@ class AuthController { const hour = date.getHours(); const minutes = date.getMinutes(); // Détruire la session pour déconnecter l'utilisateur - req.session.destroy((err) => { - if (err) { - console.error(err); - res.status(500).json({ error: 'Erreur lors de la déconnexion.' }); - } else { - console.log("[" + hour + ":" + minutes + "] " + pseudo + " have been disconnected."); - res.status(200).json({ message: 'Déconnexion réussie' }); + req.session.destroy((err) => { + if (err) { + console.error(err); + res.status(500).json({ error: 'Erreur lors de la déconnexion.' }); + } else { + console.log("[" + hour + ":" + minutes + "] " + pseudo + " have been disconnected."); + res.status(200).json({ message: 'Déconnexion réussie' }); + } + }); + } + + static async delAccount(req, res){ + const db = new DatabaseService(); + try{ + await db.connect(); + + const user = await db.getUserByPseudo(req.body.pseudo); + + if(!user){ + res.status(400).json({ error: 'Le pseudo n\'existe pas.' }); + return; + } + await db.deleteSoloStat(user.idUser); + await db.deleteOnlineStat(user.idUser); + await db.deleteUser(user.idUser); } - }); - } - + catch(error){ + console.error(error); + res.status(500).json({ error: 'Erreur lors de la supression du compte.' }); + } + finally{ + db.disconnect(); + } + } } module.exports = AuthController; \ No newline at end of file diff --git a/cryptide_project/src/server/controllers/SessionController.js b/cryptide_project/src/server/controllers/SessionController.js index 9f586d7..0b8f646 100644 --- a/cryptide_project/src/server/controllers/SessionController.js +++ b/cryptide_project/src/server/controllers/SessionController.js @@ -111,6 +111,36 @@ class SessionController { await db.disconnect(); } } + + static async UpdatePseudo(req, res){ + const db = new DatabaseService(); + + try{ + await db.connect(); + + const user = await db.getUserByPseudo(req.body.pseudo); + console.log("utilisateur" + user.idUser + " pseudo" + user.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 = await db.getUserByPseudo(req.body.newPseudo); + console.log("updaetdutilisateur" + updatedUser.idUser + " pseudo" + updatedUser.pseudo) + req.session.user.pseudo = updatedUser.pseudo; + console.log("req.session.user.pseudo" + req.session.user.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 5cb305a..58e537e 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 5337de0..63fb965 100644 --- a/cryptide_project/src/server/routes/AuthRoutes.js +++ b/cryptide_project/src/server/routes/AuthRoutes.js @@ -7,9 +7,11 @@ const SessionController = require('../controllers/SessionController'); router.post('/auth/signup', AuthController.signUp); router.post('/auth/signin', AuthController.signIn); router.delete('/auth/logout', AuthController.logout) +router.delete('/auth/delAccount', AuthController.delAccount) // Routes pour les sessions router.get('/session', SessionController.getUserInformation); +router.put('/session/updatePseudo', SessionController.UpdatePseudo); router.put('/session/updateSoloStats', SessionController.updateSoloStats); router.put('/session/updateOnlineStats', SessionController.updateOnlineStats); diff --git a/cryptide_project/src/server/services/DatabaseService.js b/cryptide_project/src/server/services/DatabaseService.js index d02f1d5..d465c7d 100644 --- a/cryptide_project/src/server/services/DatabaseService.js +++ b/cryptide_project/src/server/services/DatabaseService.js @@ -1,5 +1,6 @@ const sqlite3 = require('sqlite3'); const path = require('path'); +const { rejects } = require('assert'); class DatabaseService { constructor(){ @@ -173,6 +174,58 @@ class DatabaseService { }); }); } + + async deleteUser(userId){ + return new Promise((resolve, reject) => { + this.client.run('DELETE FROM users WHERE idUser=?', userId, (err, result) => { + if(err){ + reject(err); + } + else{ + resolve(result); + } + }); + }); + } + + async deleteSoloStat(userId){ + return new Promise((resolve, reject) => { + this.client.run('DELETE FROM solo_stats WHERE idUser=?', userId, (err, result) => { + if(err){ + reject(err); + } + else{ + resolve(result); + } + }); + }); + } + + async deleteOnlineStat(userId){ + return new Promise((resolve, reject) => { + this.client.run('DELETE FROM online_stats WHERE idUser=?', userId, (err, result) => { + if(err){ + reject(err); + } + else{ + resolve(result); + } + }); + }); + } + + 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/AuthService.tsx b/cryptide_project/src/services/AuthService.tsx index d25ad24..638788f 100644 --- a/cryptide_project/src/services/AuthService.tsx +++ b/cryptide_project/src/services/AuthService.tsx @@ -1,5 +1,7 @@ -import { ADRESSE_DBSERVER } from '../adressConfig'; import VerificationService from './VerificationService'; +import {ADRESSE_DBSERVER} from "../AdressConfig" +import User from '../model/User'; + class AuthService{ // Méthode pour vérifier les données de connexion @@ -82,6 +84,30 @@ class AuthService{ throw error; } } + + static async delAccount(pseudo: string){ + try { + const response = await fetch(ADRESSE_DBSERVER + '/auth/delAccount', { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ pseudo }), + 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 AuthService; \ No newline at end of file diff --git a/cryptide_project/src/services/SessionService.tsx b/cryptide_project/src/services/SessionService.tsx index 27d5243..230f236 100644 --- a/cryptide_project/src/services/SessionService.tsx +++ b/cryptide_project/src/services/SessionService.tsx @@ -1,4 +1,4 @@ -import { ADRESSE_DBSERVER } from "../adressConfig"; +import {ADRESSE_DBSERVER} from "../AdressConfig" class SessionService { static async getSession() { @@ -83,7 +83,34 @@ class SessionService { throw error; } } + + static async UpdatePseudo(pseudo : string, newPseudo : string) { + console.log("pseudo : " + pseudo + " newpseudo : " + newPseudo) + 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;