diff --git a/cryptide_project/src/Pages/Profile.tsx b/cryptide_project/src/Pages/Profile.tsx
index bcaf8c6..a59ad2e 100644
--- a/cryptide_project/src/Pages/Profile.tsx
+++ b/cryptide_project/src/Pages/Profile.tsx
@@ -1,11 +1,8 @@
-import React, { useEffect, useState } from 'react';
+import React, { useState } from 'react';
import ProfilePDP from '../Components/ProfilePDP';
import SessionService from '../services/SessionService';
import AuthService from '../services/AuthService';
-import { PlayerProps } from '../types/Player';
-import { delay, set, update } from 'lodash';
-import { socket } from '../SocketConfig';
/* Style */
@@ -17,9 +14,6 @@ import Cancel from '../res/icon/cancel.png'
/* Nav */
import { useNavigate } from 'react-router-dom';
-/* Model */
-import User from '../model/User';
-
/* Context */
import { useAuth } from '../Contexts/AuthContext';
@@ -31,6 +25,8 @@ import Form from 'react-bootstrap/Form';
import ProgressBar from 'react-bootstrap/ProgressBar';
+const basePath = process.env.REACT_APP_BASE_PATH || '';
+
//@ts-ignore
const Profile = () => {
@@ -85,22 +81,23 @@ const Profile = () => {
};
//* Vérification de l'ancien mot de passe :
- const handleConfirmedAuth = () => {
-
+ const handleConfirmedAuth = async () => {
// Vérification de l'ancien mot de passe
- // if (oldPassword === user?.password) {
- if (oldPassword === 'coucou') { //! pour l'instant c'est 'coucou', mais il faudra mettre le vrai mdp.
- console.log('Ancien mot de passe correct.');
- setShowWrongPassword(false);
- setShowCorrectPassword(true);
- setDisableNextStep(false);
- setpercent(25);
- }
- else{
- console.log('Ancien mot de passe incorrect.');
- setShowWrongPassword(true);
- setShowCorrectPassword(false);
- setDisableNextStep(true);
+ if(user){
+ try {
+ if (await AuthService.validatePassword(user?.pseudo, oldPassword)) {
+ console.log('Ancien mot de passe correct.');
+ setShowWrongPassword(false);
+ setShowCorrectPassword(true);
+ setDisableNextStep(false);
+ setpercent(25);
+ }
+ } catch (error) {
+ console.error(error);
+ setShowWrongPassword(true);
+ setShowCorrectPassword(false);
+ setDisableNextStep(true);
+ }
}
}
@@ -112,24 +109,25 @@ const Profile = () => {
}
//* Modification du mot de passe :
- const handlePasswordChange = () => {
+ const handlePasswordChange = async () => {
//Effectuer la modification du mot de passe
// sinon, affichez une erreur
- if (newPassword === confirmNewPassword) {
- // SessionService.UpdatePassword(user?.pseudo, newPassword);
- // user.password = newPassword;
- console.log('Changement de mot de passe');
- setpercent(100);
- setTimeout(async () => {
- setShowPasswordModal(false);
- }, 3000);
- } else {
- //les mots de passe ne correspondent pas
- console.error("Les mots de passe ne correspondent pas.");
- setShowWrongPassword(true);
- setTimeout(async () => {
- setShowWrongPassword(false);
- }, 1500);
+ if(user){
+ if (newPassword === confirmNewPassword) {
+ await AuthService.updatePassword(user.pseudo, newPassword);
+ console.log('Changement de mot de passe');
+ setpercent(100);
+ setTimeout(async () => {
+ setShowPasswordModal(false);
+ }, 1250);
+ } else {
+ //les mots de passe ne correspondent pas
+ console.error("Les mots de passe ne correspondent pas.");
+ setShowWrongPassword(true);
+ setTimeout(async () => {
+ setShowWrongPassword(false);
+ }, 1250);
+ }
}
};
@@ -180,16 +178,15 @@ const Profile = () => {
if(user!= null){
const pseudo = user.pseudo;
- AuthService.delAccount(pseudo);
- AuthService.logout();
logout();
+ AuthService.delAccount(pseudo);
}
else{
console.error("l'utilisateur ne peut pas être null")
}
handleCloseDeleteModal();
- navigate("/play")
+ navigate(`${basePath}/`)
} else {
console.error('Phrase de confirmation incorrecte.');
diff --git a/cryptide_project/src/Pages/SignUpForm.tsx b/cryptide_project/src/Pages/SignUpForm.tsx
index 2796999..9e29449 100644
--- a/cryptide_project/src/Pages/SignUpForm.tsx
+++ b/cryptide_project/src/Pages/SignUpForm.tsx
@@ -4,6 +4,9 @@ import { useNavigate } from 'react-router-dom';
import AuthService from '../services/AuthService';
import '../Style/Global.css';
+const basePath = process.env.REACT_APP_BASE_PATH || '';
+
+
const SignUp = () => {
const navigate = useNavigate();
@@ -32,8 +35,8 @@ const SignUp = () => {
setShowConfirmation(true);
setTimeout(() => {
- navigate('/login'); // 3 secondes avant de rediriger vers la page de connexion
- }, 3000);
+ navigate(`${basePath}/login`); // 3 secondes avant de rediriger vers la page de connexion
+ }, 1250);
}
} catch (error: any) {
setError(error.message);
@@ -101,7 +104,7 @@ const SignUp = () => {
{showConfirmation && (
- Inscription réussie ! Vous serez redirigé vers la page de connexion dans 3 secondes.
+ Inscription réussie ! Vous serez redirigé vers la page de connexion.
)}
diff --git a/cryptide_project/src/model/DataManagers/DbUserService.ts b/cryptide_project/src/model/DataManagers/DbUserService.ts
index 8454966..18dafcc 100644
--- a/cryptide_project/src/model/DataManagers/DbUserService.ts
+++ b/cryptide_project/src/model/DataManagers/DbUserService.ts
@@ -1,3 +1,4 @@
+import { random } from "lodash";
import SessionService from "../../services/SessionService";
import { socket } from "../../SocketConfig";
import User from "../User";
@@ -10,33 +11,72 @@ class DbUserService implements IUserService{
// Vérifie si il y a une session
if (sessionData.user) {
- // Il y a une session on récupère les infos du joueur
- const updatedPlayer: User = new User(socket.id, sessionData.user.pseudo, sessionData.user.profilePicture, {
- nbGames: sessionData.user.soloStats.nbGames,
- bestScore: sessionData.user.soloStats.bestScore,
- avgNbTry: sessionData.user.soloStats.avgNbTry,
+ const currentUser = new User(socket.id, sessionData.user.pseudo, sessionData.profilePicture,
+ {
+ nbGames: sessionData.user.mastermindStats.nbGames,
+ bestScore: sessionData.user.mastermindStats.bestScore,
+ avgNbTry: sessionData.user.mastermindStats.avgNbTry
+ },
+ {
+ nbGames: sessionData.user.easyEnigmaStats.nbGames,
+ nbWins: sessionData.user.easyEnigmaStats.nbWins,
+ ratio: sessionData.user.easyEnigmaStats.ratio,
+ bestTime: sessionData.user.easyEnigmaStats.bestTime,
+ avgTime: sessionData.user.easyEnigmaStats.avgTime
+ },
+ {
+ nbGames: sessionData.user.mediumEnigmaStats.nbGames,
+ bestScore: sessionData.user.mediumEnigmaStats.bestScore,
+ avgNbTry: sessionData.user.mediumEnigmaStats.avgNbTry
+ },
+ {
+ nbGames: sessionData.user.hardEnigmaStats.nbGames,
+ nbWins: sessionData.user.hardEnigmaStats.nbWins,
+ ratio: sessionData.user.hardEnigmaStats.ratio,
+ bestTime: sessionData.user.hardEnigmaStats.bestTime,
+ avgTime: sessionData.user.hardEnigmaStats.avgTime
},
{
nbGames: sessionData.user.onlineStats.nbGames,
nbWins: sessionData.user.onlineStats.nbWins,
ratio: sessionData.user.onlineStats.ratio,
- })
- return [updatedPlayer, true]
- } else {
- // Pas de session on génère un guest random
- const guestPlayer: User = new User(socket.id, 'Guest_' + Math.floor(Math.random() * 1000000), '',
+ });
+
+ return [currentUser, true];
+ }
+ else{
+ const guestUser = new User(socket.id, "Guest_" + random(1000, 9999), "",
+ {
+ nbGames: 0,
+ bestScore: 0,
+ avgNbTry: 0
+ },
+ {
+ nbGames: 0,
+ nbWins: 0,
+ ratio: 0,
+ bestTime: 0,
+ avgTime: 0
+ },
{
nbGames: 0,
bestScore: 0,
- avgNbTry: 0,
+ avgNbTry: 0
+ },
+ {
+ nbGames: 0,
+ nbWins: 0,
+ ratio: 0,
+ bestTime: 0,
+ avgTime: 0
},
{
nbGames: 0,
nbWins: 0,
ratio: 0,
- })
- return [guestPlayer, false]
-
+ });
+
+ return [guestUser, false];
}
} catch (error) {
console.error(error);
@@ -44,9 +84,9 @@ class DbUserService implements IUserService{
}
}
- async updateSoloStats(pseudo: string, nbGames: number, bestScore: number, avgNbTry: number): Promise