Browse Source

feat: google auth module

Nick 6 years ago
parent
commit
2abecea09c

+ 0 - 1
server/modules/authentication/dropbox/authentication.js

@@ -16,7 +16,6 @@ module.exports = {
         clientSecret: conf.clientSecret,
         callbackURL: conf.callbackURL
       }, async (accessToken, refreshToken, profile, cb) => {
-        console.info(profile)
         try {
           const user = await WIKI.models.users.processProfile({
             profile: {

+ 14 - 6
server/modules/authentication/google/authentication.js

@@ -5,6 +5,7 @@
 // ------------------------------------
 
 const GoogleStrategy = require('passport-google-oauth20').Strategy
+const _ = require('lodash')
 
 module.exports = {
   init (passport, conf) {
@@ -13,12 +14,19 @@ module.exports = {
         clientID: conf.clientId,
         clientSecret: conf.clientSecret,
         callbackURL: conf.callbackURL
-      }, (accessToken, refreshToken, profile, cb) => {
-        WIKI.models.users.processProfile(profile).then((user) => {
-          return cb(null, user) || true
-        }).catch((err) => {
-          return cb(err, null) || true
-        })
+      }, async (accessToken, refreshToken, profile, cb) => {
+        try {
+          const user = await WIKI.models.users.processProfile({
+            profile: {
+              ...profile,
+              picture: _.get(profile, 'photos[0].value', '')
+            },
+            providerKey: 'google'
+          })
+          cb(null, user)
+        } catch (err) {
+          cb(err, null)
+        }
       })
     )
   }

+ 5 - 1
server/modules/authentication/google/definition.yml

@@ -5,8 +5,12 @@ author: requarks.io
 logo: https://static.requarks.io/logo/google.svg
 color: red darken-1
 website: https://console.developers.google.com/
-isAvailable: false
+isAvailable: true
 useForm: false
+scopes:
+  - profile
+  - email
+  - openid
 props:
   clientId:
     type: String

+ 1 - 1
server/modules/authentication/slack/definition.yml

@@ -7,7 +7,7 @@ color: green
 website: https://api.slack.com/docs/oauth
 isAvailable: true
 useForm: false
-scope:
+scopes:
   - identity.basic
   - identity.email
   - identity.avatar