Affichage du pseudo après connexion avec les sessions

pull/81/head
Baptiste MARCEL 1 year ago
parent 08fc7f64ab
commit 4c1199c6ba

@ -19,6 +19,8 @@
"bcrypt": "^5.1.1",
"body-parser": "^1.20.2",
"bootstrap": "^5.3.2",
"cookie-parser": "^1.4.6",
"cookie-session": "^2.0.0",
"cors": "^2.8.5",
"express": "^4.18.2",
"express-session": "^1.17.3",
@ -6566,11 +6568,65 @@
"node": ">= 0.6"
}
},
"node_modules/cookie-parser": {
"version": "1.4.6",
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
"integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
"dependencies": {
"cookie": "0.4.1",
"cookie-signature": "1.0.6"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/cookie-parser/node_modules/cookie": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-session": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/cookie-session/-/cookie-session-2.0.0.tgz",
"integrity": "sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==",
"dependencies": {
"cookies": "0.8.0",
"debug": "3.2.7",
"on-headers": "~1.0.2",
"safe-buffer": "5.2.1"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/cookie-session/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"node_modules/cookies": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
"integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
"dependencies": {
"depd": "~2.0.0",
"keygrip": "~1.1.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/core-js": {
"version": "3.33.2",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.2.tgz",
@ -12392,6 +12448,17 @@
"integrity": "sha512-TyQTtsabOVv3MeOpR92sIKk/br9wxS+zGj4BG7CR8YbK4jM3tyIBaF0zhzeBUMx36/Q/iQLOKKOT+3jOQtemRQ==",
"peer": true
},
"node_modules/keygrip": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
"integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
"dependencies": {
"tsscmp": "1.0.6"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@ -17678,6 +17745,14 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/tsscmp": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
"integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
"engines": {
"node": ">=0.6.x"
}
},
"node_modules/tsutils": {
"version": "3.21.0",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",

@ -13,6 +13,8 @@
"bcrypt": "^5.1.1",
"body-parser": "^1.20.2",
"bootstrap": "^5.3.2",
"cookie-parser": "^1.4.6",
"cookie-session": "^2.0.0",
"cors": "^2.8.5",
"express": "^4.18.2",
"express-session": "^1.17.3",

@ -1,4 +1,5 @@
import React from 'react';
import {useEffect, useState} from 'react';
/* Style */
import './Play.css';
@ -9,6 +10,7 @@ import { Link } from 'react-router-dom';
/* Component */
import ButtonImgNav from "../Components/ButtonImgNav"
import SessionService from "../services/SessionService";
/* Img */
import Person from '../res/img/Person.png';
@ -21,6 +23,31 @@ import share from '../res/icon/share.png';
function Play() {
const theme=useTheme()
const [username, setUsername] = useState('');
useEffect(() => {
const fetchUserInformation = async () => {
try {
const sessionData = await SessionService.getSession();
console.log(sessionData);
// Vérifie si il y a une session
if (sessionData.user) {
setUsername(sessionData.user.pseudo);
} else {
// Pas de session on génère un guest random
setUsername(`Guest ${Math.floor(Math.random() * 100000)}`);
}
} catch (error) {
console.error(error);
}
};
fetchUserInformation();
}, []);
return (
<div className="MainContainer">
@ -33,7 +60,7 @@ function Play() {
<div className="MidContainer">
<div>
<h2>
Guest 177013
{username}
</h2>
<img src={Person}
height='300'

@ -70,10 +70,9 @@ class AuthController {
return;
}
// Stocker l'utilisateur dans la session
if(!req.session.user && req.body.remember){
req.session.user = user;
}
// Stocker l'utilisateur dans la session){
console.log(req.session);
req.session.user = user;
// Envoyer une réponse réussie
res.status(200).json({ message: 'Connexion réussie', user: user });
@ -87,6 +86,19 @@ class AuthController {
await databaseService.disconnect();
}
}
static getSession(req, res) {
console.log(req.session);
// Vérifier si l'utilisateur est connecté
if (req.session.user) {
// Envoyer une réponse réussie
res.status(200).json({ message: 'Utilisateur connecté', user: req.session.user });
} else {
// Envoyer une réponse d'erreur
res.status(401).json({ error: 'Utilisateur non connecté' });
}
}
}
module.exports = AuthController;

@ -2,11 +2,18 @@ const DatabaseService = require('../services/DatabaseService');
class SessionController {
static async getUserInformation(req, res) {
if (!req.session.user) {
res.status(200).json({ message: 'Utilisateur non connecté' });
return;
try{
console.log(req.session);
if (!req.session.user) {
res.status(200).json({ message: 'User not found' });
return;
}
res.status(200).json({ user: req.session.user });
}
catch(error){
console.error(error);
res.status(500).json({ error: 'Erreur lors de la récupération de l\'utilisateur.' });
}
res.status(200).json({ user: req.session.user });
}
}

@ -1,8 +1,13 @@
const express = require('express');
const router = express.Router();
const AuthController = require('../controllers/AuthController');
const SessionController = require('../controllers/SessionController');
// Routes pour l'authentification
router.post('/auth/signup', AuthController.signUp);
router.post('/auth/signin', AuthController.signIn);
// Routes pour les sessions
router.get('/session', SessionController.getUserInformation);
module.exports = router;

@ -10,7 +10,12 @@ const app = express();
const port = 3000;
// Middleware
app.use(cors()); // Autoriser les requêtes cross-origin
app.use(cors(
{
origin: 'http://localhost:3001',
credentials: true
}
)); // Autoriser les requêtes cross-origin
app.use(bodyParser.json()); // Parser le body des requêtes en JSON
// Session
@ -19,8 +24,9 @@ app.use(session({
secret: secret,
resave: false,
saveUninitialized: true,
cookie: { secure: process.env.NODE_ENV === 'production' ? true : false,
maxAge: 60 * 60 * 1000
cookie: {
secure: process.env.NODE_ENV === 'production' ? true : false,
maxAge: 60 * 60 * 1000
}
}));

@ -18,6 +18,7 @@ class AuthService{
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
credentials: 'include',
});
if (response.ok) {
@ -41,6 +42,7 @@ class AuthService{
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
credentials: 'include',
});
if (response.ok) {

@ -0,0 +1,27 @@
class SessionService {
static async getSession() {
try {
const response = await fetch('http://localhost:3000/session', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
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;

@ -3772,11 +3772,34 @@ convert-source-map@^2.0.0:
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
cookie-parser@^1.4.6:
version "1.4.6"
resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz"
integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==
dependencies:
cookie "0.4.1"
cookie-signature "1.0.6"
cookie-session@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/cookie-session/-/cookie-session-2.0.0.tgz"
integrity sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==
dependencies:
cookies "0.8.0"
debug "3.2.7"
on-headers "~1.0.2"
safe-buffer "5.2.1"
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
cookie@0.4.1:
version "0.4.1"
resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz"
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
cookie@0.4.2:
version "0.4.2"
resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz"
@ -3787,6 +3810,14 @@ cookie@0.5.0:
resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
cookies@0.8.0:
version "0.8.0"
resolved "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz"
integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==
dependencies:
depd "~2.0.0"
keygrip "~1.1.0"
core-js-compat@^3.31.0, core-js-compat@^3.33.1:
version "3.33.2"
resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz"
@ -4098,6 +4129,13 @@ debug@2.6.9:
dependencies:
ms "2.0.0"
debug@3.2.7:
version "3.2.7"
resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
decimal.js@^10.2.1:
version "10.4.3"
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz"
@ -6850,6 +6888,13 @@ jsonpointer@^5.0.0:
resolved "https://registry.npmjs.org/keycharm/-/keycharm-0.4.0.tgz"
integrity sha512-TyQTtsabOVv3MeOpR92sIKk/br9wxS+zGj4BG7CR8YbK4jM3tyIBaF0zhzeBUMx36/Q/iQLOKKOT+3jOQtemRQ==
keygrip@~1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz"
integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==
dependencies:
tsscmp "1.0.6"
keyv@^4.5.3:
version "4.5.4"
resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
@ -9967,6 +10012,11 @@ tslib@^2.0.3, tslib@^2.4.0:
resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
tsscmp@1.0.6:
version "1.0.6"
resolved "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz"
integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"

Loading…
Cancel
Save