const axios = require("axios"); const { getUserByGId } = require('../users/getUsers'); const { postUser } = require('../users/postUsers'); const CLIEN_ID = "71229835507-9413gbpdamv2qbcb2ov8oda2oqgcsk8q.apps.googleusercontent.com"; const GOOGLE_SECRET = "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"; const GOOGLE_REDIRECT_URI = "http://localhost:3000/auth/google/callback"; exports.handleGoogleAuth = async (req, res) => { const code = req.query.code; if (!code) return res.status(400).json({ error: "Code de validation manquant" }); try { const params = new URLSearchParams(); params.append("client_id", CLIEN_ID); params.append("client_secret", GOOGLE_SECRET); params.append("grant_type", "authorization_code"); params.append("code", code); params.append("redirect_uri", GOOGLE_REDIRECT_URI); const tokenData = await axios.post( "https://oauth2.googleapis.com/token", params, { headers: { "Content-Type": "application/x-www-form-urlencoded", }, } ); const accessToken = tokenData.data.access_token; const userResponse = await axios.get("https://www.googleapis.com/oauth2/v2/userinfo", { headers: { Authorization: `Bearer ${accessToken}`, }, }); const userData = userResponse.data; if (!userData || !userData.id) { console.error("Réponse Google inattendue:", userResponse.data); return res.status(500).json({ error: "Impossible de récupérer les infos utilisateur depuis Google", details: userResponse.data }); } let savedUser = await getUserByGId(userData.id); if (!savedUser) { const newUser = { username: userData.name || userData.email, google_id: userData.id, }; savedUser = await postUser(newUser); } req.session.user = savedUser; res.redirect('/'); } catch (err) { console.error(err.response?.data || err.message); res.status(500).json({ error: "Erreur lors de la connexion à Google" }); } };