From 32ee0904f17d8c0df91e1fc4bb6daa742f545092 Mon Sep 17 00:00:00 2001 From: jleroy Date: Tue, 11 Mar 2025 11:28:14 +0100 Subject: [PATCH] auth front --- backend/controllers/authController.js | 39 ++++++++++ backend/routes/apiRoutes.js | 5 +- backend/server.js | 1 - package-lock.json | 16 +++++ package.json | 1 + .../_component/sidbar/sidbar.component.html | 30 ++++---- src/app/_component/sidbar/sidbar.component.ts | 35 ++++++++- src/app/_guards/auth.guard.ts | 21 ++++++ src/app/_guards/no-auth.guard.ts | 22 ++++++ src/app/_models/users.ts | 9 +++ src/app/_services/auth.service.ts | 72 +++++++++++++++++++ src/app/app.component.ts | 1 + src/app/app.config.ts | 23 +++++- .../public/pages/login/login.component.css | 0 .../public/pages/login/login.component.html | 32 +++++++++ src/app/public/pages/login/login.component.ts | 14 ++++ .../pages/register/register.component.css | 0 .../pages/register/register.component.html | 43 +++++++++++ .../pages/register/register.component.ts | 14 ++++ src/app/public/public-routing.module.ts | 4 ++ src/environments/environment.ts | 4 ++ 21 files changed, 363 insertions(+), 23 deletions(-) create mode 100644 src/app/_guards/auth.guard.ts create mode 100644 src/app/_guards/no-auth.guard.ts create mode 100644 src/app/_models/users.ts create mode 100644 src/app/_services/auth.service.ts create mode 100644 src/app/public/pages/login/login.component.css create mode 100644 src/app/public/pages/login/login.component.html create mode 100644 src/app/public/pages/login/login.component.ts create mode 100644 src/app/public/pages/register/register.component.css create mode 100644 src/app/public/pages/register/register.component.html create mode 100644 src/app/public/pages/register/register.component.ts create mode 100644 src/environments/environment.ts diff --git a/backend/controllers/authController.js b/backend/controllers/authController.js index b10d207..0be461e 100644 --- a/backend/controllers/authController.js +++ b/backend/controllers/authController.js @@ -141,3 +141,42 @@ export const checkAuth = (req, res) => { }); } }; + +export const getprofile = async (req, res) => { + const token = req.cookies.jwt; + let conn; + try { + conn = await pool.getConnection(); + + req.user = jwt.verify(token, process.env.JWT_SECRET); + + // Requête pour récupérer les informations de l'utilisateur sauf le mot de passe + const query = ` + SELECT id, email, firstname, lastname, updated_at, created_at + FROM users + WHERE id = ?`; + const results = await conn.query(query, [req.user.id]); + + // Vérifie si l'utilisateur existe + if (results.length === 0) { + return res.status(404).json({ + message: 'Utilisateur non trouvé.', + status: false + }); + } + + return res.status(200).json({ + results + }); + } catch (error) { + console.error('Erreur lors de la récupération de l\'utilisateur :', error); + return res.status(500).json({ + message: 'Erreur lors de la récupération de l\'utilisateur.', + status: false + }); + } finally { + if (conn) { + await conn.release(); + } + } +}; diff --git a/backend/routes/apiRoutes.js b/backend/routes/apiRoutes.js index 573f5a6..79573e7 100644 --- a/backend/routes/apiRoutes.js +++ b/backend/routes/apiRoutes.js @@ -5,7 +5,7 @@ import { register, login, checkAuth, - logout, + logout, getprofile, } from "../controllers/authController.js"; import {verifyToken} from "../middleware/tokenJWTMiddleware.js"; import multer from "multer"; @@ -29,7 +29,7 @@ const generateFileName = (originalName) => { }; const storage = multer.diskStorage({ destination: function (req, file, cb) { - cb(null, 'uploads/'); // Stockage des fichiers dans le dossier uploads/ + cb(null, 'uploads/'); }, filename: function (req, file, cb) { cb(null, generateFileName(file.originalname)); @@ -48,6 +48,7 @@ router.post('/upload', verifyToken, upload.single('file'), (req, res) => { router.post('/auth/register', register); router.post('/auth/login', login); router.post('/auth/logout', logout); +router.get('/auth/user', verifyToken, getprofile); router.get('/auth/check-auth', verifyToken, checkAuth); export default router; diff --git a/backend/server.js b/backend/server.js index a838b9c..edf07e7 100644 --- a/backend/server.js +++ b/backend/server.js @@ -63,7 +63,6 @@ const startServer = async () => { console.log(`🚀 Lancement de l'API en cours... 🔧`); await testDatabaseConnection(); app.listen(process.env.PORT, () => { - console.log(`📢 NODE_ENV = ${process.env.NODE_ENV} 🌍`); console.log(`📢 Chargement du fichier : ${envFile} 📄`); console.log(`🚀 API démarrée sur le port ${process.env.PORT} 🎯`); console.log(`🌍 Allowed Origin : ${process.env.ALLOWED_ORIGIN} 🔗`); diff --git a/package-lock.json b/package-lock.json index f60d572..3c0def8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "eni-angular", "version": "0.0.0", "dependencies": { + "@angular/animations": "^19.2.1", "@angular/common": "^19.2.0", "@angular/compiler": "^19.2.0", "@angular/core": "^19.2.0", @@ -350,6 +351,21 @@ "tslib": "^2.1.0" } }, + "node_modules/@angular/animations": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.1.tgz", + "integrity": "sha512-I67XYXBic9bM+yfce6Dqa950TsrEWB6uwSB2l6eIg3Byp48yJxQYbyjvjDbMXPieU2Bzo8FYVSD+lc8cF4+L6A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "19.2.1" + } + }, "node_modules/@angular/build": { "version": "19.2.1", "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.1.tgz", diff --git a/package.json b/package.json index b699ad7..23b80c2 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "private": true, "dependencies": { + "@angular/animations": "^19.2.1", "@angular/common": "^19.2.0", "@angular/compiler": "^19.2.0", "@angular/core": "^19.2.0", diff --git a/src/app/_component/sidbar/sidbar.component.html b/src/app/_component/sidbar/sidbar.component.html index 7dd8ee8..6661e5c 100644 --- a/src/app/_component/sidbar/sidbar.component.html +++ b/src/app/_component/sidbar/sidbar.component.html @@ -6,7 +6,7 @@