diff --git a/app.js b/app.js index e0dd93c..60c2281 100644 --- a/app.js +++ b/app.js @@ -1,5 +1,6 @@ const express = require("express"); const bodyParser = require("body-parser"); +const session = require("express-session"); const apiRoutes = require("./routes/api.routes"); const frontRoutes = require("./routes/front.routes"); @@ -9,6 +10,11 @@ const PORT = process.env.PORT || 4200; // Middleware app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); +app.use(session({ + secret: "your_secret_key", // change ce secret ! + resave: false, + saveUninitialized: true, +})); // Routes app.use("/api", apiRoutes); diff --git a/controllers/linkedin.js b/controllers/linkedin.js index 3aad9f1..02d3d25 100644 --- a/controllers/linkedin.js +++ b/controllers/linkedin.js @@ -37,10 +37,32 @@ const handleCallback = async (req, res) => { }) ); - accessToken = tokenResponse.data.access_token; - res.send( - "Authentication successful! You can now retrieve your profile information." - ); + const accessToken = tokenResponse.data.access_token; + + // Récupère les infos utilisateur + const profileResponse = await axios.get("https://api.linkedin.com/v2/me", { + headers: { + Authorization: `Bearer ${accessToken}`, + }, + }); + + const emailResponse = await axios.get("https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))", { + headers: { + Authorization: `Bearer ${accessToken}`, + }, + }); + + // Stocke dans la session + req.session.user = { + accessToken, + nom: profileResponse.data.localizedFirstName + " " + profileResponse.data.localizedLastName, + img: profileResponse.data.profilePicture + ? profileResponse.data.profilePicture["displayImage~"].elements[0].identifiers[0].identifier + : null, + email: emailResponse.data.elements[0]["handle~"].emailAddress, + }; + + res.send("Authentication successful! User session created."); } catch (error) { console.error( "LinkedIn token error:", diff --git a/package.json b/package.json index 980aa6e..a4a5e92 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "dependencies": { "express": "^4.17.1", "axios": "^0.21.1", - "dotenv": "^8.2.0" + "dotenv": "^8.2.0", + "express-session": "^1.17.1" }, "author": "ExostFlash", "license": "ISC",