google.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. const express = require('express');
  2. const router = express.Router();
  3. const jwt = require("jsonwebtoken");
  4. const { Email } = require('../models/email.model');
  5. const { User } = require('../models/user.model');
  6. const nodemailer = require('nodemailer');
  7. const role = require('../lib/role');
  8. //require('dotenv').config();
  9. const passport = require('passport');
  10. const GoogleStrategy = require('passport-google-oauth20').Strategy;
  11. router.use(passport.initialize());
  12. //router.use(passport.session());
  13. passport.serializeUser((user, cb) => {
  14. cb(null, user);
  15. });
  16. passport.deserializeUser((obj, cb) => {
  17. cb(null, obj);
  18. });
  19. // passport.use(new GoogleStrategy({
  20. // clientID: "493465923713-qrbgtq8d53iguine1gf928483mn4odes.apps.googleusercontent.com",
  21. // clientSecret: "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",
  22. // callbackURL: "http://localhost:4000/api/auth/google/callback"
  23. // },
  24. // async (accessToken, refreshToken, profile, done) => {
  25. // console.log(profile.emails[0].value)
  26. // return done(null, profile);
  27. // var email = profile.emails[0].value
  28. // const user = await User.findOne({email: email})
  29. // if (user) {
  30. // console.log(user)
  31. // user.username = accessToken;
  32. // user.save().then(()=>{
  33. // return done(null, user);
  34. // })
  35. // }else{
  36. // console.log('creation of user')
  37. // //make a new record
  38. // let user = await new User({
  39. // googleId: profile.id,
  40. // email: profile.emails[0].value,
  41. // accessToken : accessToken,
  42. // refreshToken : refreshToken
  43. // }).save()
  44. // done(null, user);
  45. // }
  46. // console.log('acces token ',accessToken);
  47. // console.log('refresh token ',refreshToken);
  48. // console.log('prfile ',profile.emails[0].value);
  49. // console.log('done ',done);
  50. // }
  51. // ));
  52. passport.use(new GoogleStrategy({
  53. clientID: "493465923713-qrbgtq8d53iguine1gf928483mn4odes.apps.googleusercontent.com",
  54. clientSecret: "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",
  55. callbackURL: "http://localhost:4000/api/auth/google/callback"
  56. },
  57. async (req, accessToken, refreshToken, profile, cb) => {
  58. User.findOne({ email: profile.emails[0].value }, (err, user) => {
  59. if (err) {
  60. cb(err); // handle errors!
  61. }
  62. if (!err && user !== null) {
  63. cb(err, user);
  64. }
  65. else {
  66. user = new User({
  67. googleId: profile.id,
  68. email: profile.emails[0].value,
  69. firstname: profile.name.givenName,
  70. lastname: profile.name.familyName,
  71. role: role.Client,
  72. isActive: true,
  73. isGain: false,
  74. });
  75. user.save((err) => {
  76. if (err) {
  77. cb(err); // handle errors!
  78. } else {
  79. cb(null, user);
  80. }
  81. });
  82. }
  83. });
  84. }
  85. ));
  86. router.get('/', passport.authenticate('google', { session: false, scope: ['profile', 'email'] }),
  87. async () => {
  88. console.log('je suis dans mon get root')
  89. });
  90. // router.get('/callback', passport.authenticate('google') )
  91. router.get('/callback', passport.authenticate('google', { failureRedirect: '/failed' }),
  92. async (req, res) => {
  93. console.log('je susi dans ma fonction callback ', req.user)
  94. const token = jwt.sign({ userId: req.user._id, email: req.user.email, role: req.user.role }, process.env.SECRET_KEY, { expiresIn: '10 h' })
  95. //res.status(200).json({ success: true, token, expireIn: `${new Date().getTime() + 120000}` })
  96. console.log(token)
  97. res.redirect(`http://localhost:4200/auth/?token=${token}`);
  98. });
  99. //failed auth google
  100. router.get('/failed', async (req, res) => { res.status(404).send('erreur authentification') })
  101. //get all users
  102. router.get('/good', async (req, res) => {
  103. res.status(200).send('welcome mr ');
  104. })
  105. module.exports = router;