Bläddra i källkod

Google OAuth working

sou 7 år sedan
förälder
incheckning
b7e1366395
2 ändrade filer med 35 tillägg och 9 borttagningar
  1. 35 7
      lib/routes/login-passport.js
  2. 0 2
      lib/service/passport.js

+ 35 - 7
lib/routes/login-passport.js

@@ -244,6 +244,22 @@ module.exports = function(crowi, app) {
       debug('GoogleStrategy has not been set up');
       return;
     }
+    // ExternalAccount.findOrRegister('google', '101297323158972859647')
+    //     .catch((err) => {
+    //       throw err;
+    //     })
+    //     .then((externalAccount) => {
+    //       return externalAccount.getPopulatedUser();
+    //     })
+    //     .then((user) => {
+    //       // login
+    //       req.logIn(user, (err) => {
+    //         if (err) { console.log(err) }
+    //         else {
+    //           return loginSuccess(req, res, user);
+    //         }
+    //       });
+    //     });
 
     passport.authenticate('google', {
       scope: ['profile']
@@ -251,14 +267,26 @@ module.exports = function(crowi, app) {
   };
 
   const loginPassportGoogleCallback = function(req, res, next) {
-    console.log('loginPassportGoogleCallback');
-    passport.authenticate('google', { failureRedirect: '/login' }, (req, res) => {
-      // Do something here
-      console.log(req, '---------req')
-      console.log(res, '---------res')
-
+    passport.authenticate('google', {failureRedirect: '/login'}, (request, response) => {
+      ExternalAccount.findOrRegister('google', response.id, response.displayName, `${response.name.givenName} ${response.name.familyName}`)
+        .catch((err) => {
+          throw err;
+        })
+        .then((externalAccount) => {
+          return externalAccount.getPopulatedUser();
+        })
+        .then((user) => {
+          // login
+          req.logIn(user, err => {
+            if (err) {
+              return next();
+            }
+            else {
+              return loginSuccess(req, res, user);
+            }
+          });
+        });
     })(req, res, next);
-    return res.redirect('/');
   };
 
   return {

+ 0 - 2
lib/service/passport.js

@@ -270,8 +270,6 @@ class PassportService {
       clientSecret: config.crowi['security:passport-google:clientSecret'],
       callbackURL: '/passport/google/callback',
     }, function(accessToken, refreshToken, profile, done) {
-      // Do something here
-      console.log(profile);
       if (profile) {
         return done(null, profile);
       }