| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- const express = require('express');
- const router = express.Router();
- const jwt = require('jsonwebtoken');
- const { Email } = require('../models/email.model');
- const { User } = require('../models/user.model');
- const nodemailer = require('nodemailer');
- const role = require('../lib/role');
- const config = require('../config/config.json');
- //require('dotenv').config();
- const passport = require('passport');
- const GoogleStrategy = require('passport-google-oauth20').Strategy;
- router.use(passport.initialize());
- router.use(passport.session());
- passport.serializeUser((user, cb) => {
- cb(null, user);
- });
- passport.deserializeUser((obj, cb) => {
- cb(null, obj);
- });
- // passport.use(new GoogleStrategy({
- // clientID: "493465923713-qrbgtq8d53iguine1gf928483mn4odes.apps.googleusercontent.com",
- // clientSecret: "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",
- // callbackURL: "http://localhost:4000/api/auth/google/callback"
- // },
- // async (accessToken, refreshToken, profile, done) => {
- // console.log(profile.emails[0].value)
- // return done(null, profile);
- // var email = profile.emails[0].value
- // const user = await User.findOne({email: email})
- // if (user) {
- // console.log(user)
- // user.username = accessToken;
- // user.save().then(()=>{
- // return done(null, user);
- // })
- // }else{
- // console.log('creation of user')
- // //make a new record
- // let user = await new User({
- // googleId: profile.id,
- // email: profile.emails[0].value,
- // accessToken : accessToken,
- // refreshToken : refreshToken
- // }).save()
- // done(null, user);
- // }
- // console.log('acces token ',accessToken);
- // console.log('refresh token ',refreshToken);
- // console.log('prfile ',profile.emails[0].value);
- // console.log('done ',done);
- // }
- // ));
- passport.use(new GoogleStrategy({
- clientID: "493465923713-qrbgtq8d53iguine1gf928483mn4odes.apps.googleusercontent.com",
- clientSecret: "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",
- callbackURL: "http://localhost:4000/api/auth/google/callback"
- },
- async (req, accessToken, refreshToken, profile, cb) => {
- User.findOne({ email: profile.emails[0].value }, (err, user) => {
- if (err) {
- cb(err); // handle errors!
- }
- if (!err && user !== null) {
- cb(err, user);
- }
- else {
- console.log('acces token ',accessToken);
- user = new User({
- googleId: profile.id,
- email: profile.emails[0].value,
- firstname: profile.name.givenName,
- lastname: profile.name.familyName,
- role: role.Client,
- isActive: true,
- isGain: false,
- });
- user.save((err) => {
- if (err) {
- cb(err); // handle errors!
- } else {
- cb(null, user);
- }
- });
- }
- });
- }
- ));
- router.get('/', passport.authenticate('google', { session: false, scope: ['profile', 'email'] }),
- async () => {
- console.log('je suis dans mon get root')
- });
- // router.get('/callback', passport.authenticate('google') )
- router.get('/callback', passport.authenticate('google', { failureRedirect: '/failed' }),
- async (req, res) => {
- console.log('je susi dans ma fonction callback ', req.user)
- const token = jwt.sign({ userId: req.user._id, email: req.user.email, role: req.user.role }, config.secret_key, { expiresIn: '10 h' })
- // Return the JWT token as JSON data
- res.json({ token });
- });
- //failed auth google
- router.get('/failed', async (req, res) => { res.status(404).send('erreur authentification') })
- //get all users
- router.get('/users', async (req, res) => {
- res.json(req.user);
- })
- module.exports = router;
|