feat: modular auth + logging changes
This commit is contained in:
		| @@ -8,26 +8,24 @@ | ||||
|  | ||||
| const AzureAdOAuth2Strategy = require('passport-azure-ad-oauth2').Strategy | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.azure && wiki.config.auth.azure.enabled) { | ||||
|     const jwt = require('jsonwebtoken') | ||||
|     passport.use('azure_ad_oauth2', | ||||
|       new AzureAdOAuth2Strategy({ | ||||
|         clientID: wiki.config.auth.azure.clientId, | ||||
|         clientSecret: wiki.config.auth.azure.clientSecret, | ||||
|         callbackURL: wiki.config.host + '/login/azure/callback', | ||||
|         resource: wiki.config.auth.azure.resource, | ||||
|         tenant: wiki.config.auth.azure.tenant | ||||
|       }, (accessToken, refreshToken, params, profile, cb) => { | ||||
|         let waadProfile = jwt.decode(params.id_token) | ||||
|         waadProfile.id = waadProfile.oid | ||||
|         waadProfile.provider = 'azure' | ||||
|         wiki.db.User.processProfile(waadProfile).then((user) => { | ||||
|           return cb(null, user) || true | ||||
|         }).catch((err) => { | ||||
|           return cb(err, null) || true | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   const jwt = require('jsonwebtoken') | ||||
|   passport.use('azure_ad_oauth2', | ||||
|     new AzureAdOAuth2Strategy({ | ||||
|       clientID: conf.clientId, | ||||
|       clientSecret: conf.clientSecret, | ||||
|       callbackURL: conf.callbackURL, | ||||
|       resource: conf.resource, | ||||
|       tenant: conf.tenant | ||||
|     }, (accessToken, refreshToken, params, profile, cb) => { | ||||
|       let waadProfile = jwt.decode(params.id_token) | ||||
|       waadProfile.id = waadProfile.oid | ||||
|       waadProfile.provider = 'azure' | ||||
|       wiki.db.User.processProfile(waadProfile).then((user) => { | ||||
|         return cb(null, user) || true | ||||
|       }).catch((err) => { | ||||
|         return cb(err, null) || true | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
| @@ -8,21 +8,19 @@ | ||||
|  | ||||
| const FacebookStrategy = require('passport-facebook').Strategy | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.facebook && wiki.config.auth.facebook.enabled) { | ||||
|     passport.use('facebook', | ||||
|       new FacebookStrategy({ | ||||
|         clientID: wiki.config.auth.facebook.clientId, | ||||
|         clientSecret: wiki.config.auth.facebook.clientSecret, | ||||
|         callbackURL: wiki.config.host + '/login/facebook/callback', | ||||
|         profileFields: ['id', 'displayName', 'email'] | ||||
|       }, function (accessToken, refreshToken, profile, cb) { | ||||
|         wiki.db.User.processProfile(profile).then((user) => { | ||||
|           return cb(null, user) || true | ||||
|         }).catch((err) => { | ||||
|           return cb(err, null) || true | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   passport.use('facebook', | ||||
|     new FacebookStrategy({ | ||||
|       clientID: conf.clientId, | ||||
|       clientSecret: conf.clientSecret, | ||||
|       callbackURL: conf.callbackURL, | ||||
|       profileFields: ['id', 'displayName', 'email'] | ||||
|     }, function (accessToken, refreshToken, profile, cb) { | ||||
|       wiki.db.User.processProfile(profile).then((user) => { | ||||
|         return cb(null, user) || true | ||||
|       }).catch((err) => { | ||||
|         return cb(err, null) || true | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
| @@ -8,21 +8,19 @@ | ||||
|  | ||||
| const GitHubStrategy = require('passport-github2').Strategy | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.github && wiki.config.auth.github.enabled) { | ||||
|     passport.use('github', | ||||
|       new GitHubStrategy({ | ||||
|         clientID: wiki.config.auth.github.clientId, | ||||
|         clientSecret: wiki.config.auth.github.clientSecret, | ||||
|         callbackURL: wiki.config.host + '/login/github/callback', | ||||
|         scope: ['user:email'] | ||||
|       }, (accessToken, refreshToken, profile, cb) => { | ||||
|         wiki.db.User.processProfile(profile).then((user) => { | ||||
|           return cb(null, user) || true | ||||
|         }).catch((err) => { | ||||
|           return cb(err, null) || true | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   passport.use('github', | ||||
|     new GitHubStrategy({ | ||||
|       clientID: conf.clientId, | ||||
|       clientSecret: conf.clientSecret, | ||||
|       callbackURL: conf.callbackURL, | ||||
|       scope: ['user:email'] | ||||
|     }, (accessToken, refreshToken, profile, cb) => { | ||||
|       wiki.db.User.processProfile(profile).then((user) => { | ||||
|         return cb(null, user) || true | ||||
|       }).catch((err) => { | ||||
|         return cb(err, null) || true | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
| @@ -8,20 +8,18 @@ | ||||
|  | ||||
| const GoogleStrategy = require('passport-google-oauth20').Strategy | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.google && wiki.config.auth.google.enabled) { | ||||
|     passport.use('google', | ||||
|       new GoogleStrategy({ | ||||
|         clientID: wiki.config.auth.google.clientId, | ||||
|         clientSecret: wiki.config.auth.google.clientSecret, | ||||
|         callbackURL: wiki.config.host + '/login/google/callback' | ||||
|       }, (accessToken, refreshToken, profile, cb) => { | ||||
|         wiki.db.User.processProfile(profile).then((user) => { | ||||
|           return cb(null, user) || true | ||||
|         }).catch((err) => { | ||||
|           return cb(err, null) || true | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   passport.use('google', | ||||
|     new GoogleStrategy({ | ||||
|       clientID: conf.clientId, | ||||
|       clientSecret: conf.clientSecret, | ||||
|       callbackURL: conf.callbackURL | ||||
|     }, (accessToken, refreshToken, profile, cb) => { | ||||
|       wiki.db.User.processProfile(profile).then((user) => { | ||||
|         return cb(null, user) || true | ||||
|       }).catch((err) => { | ||||
|         return cb(err, null) || true | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
| @@ -7,35 +7,34 @@ | ||||
| // ------------------------------------ | ||||
|  | ||||
| const LdapStrategy = require('passport-ldapauth').Strategy | ||||
| const fs = require('fs') | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.ldap && wiki.config.auth.ldap.enabled) { | ||||
|     passport.use('ldapauth', | ||||
|       new LdapStrategy({ | ||||
|         server: { | ||||
|           url: wiki.config.auth.ldap.url, | ||||
|           bindDn: wiki.config.auth.ldap.bindDn, | ||||
|           bindCredentials: wiki.config.auth.ldap.bindCredentials, | ||||
|           searchBase: wiki.config.auth.ldap.searchBase, | ||||
|           searchFilter: wiki.config.auth.ldap.searchFilter, | ||||
|           searchAttributes: ['displayName', 'name', 'cn', 'mail'], | ||||
|           tlsOptions: (wiki.config.auth.ldap.tlsEnabled) ? { | ||||
|             ca: [ | ||||
|               fs.readFileSync(wiki.config.auth.ldap.tlsCertPath) | ||||
|             ] | ||||
|           } : {} | ||||
|         }, | ||||
|         usernameField: 'email', | ||||
|         passReqToCallback: false | ||||
|       }, (profile, cb) => { | ||||
|         profile.provider = 'ldap' | ||||
|         profile.id = profile.dn | ||||
|         wiki.db.User.processProfile(profile).then((user) => { | ||||
|           return cb(null, user) || true | ||||
|         }).catch((err) => { | ||||
|           return cb(err, null) || true | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   passport.use('ldapauth', | ||||
|     new LdapStrategy({ | ||||
|       server: { | ||||
|         url: conf.url, | ||||
|         bindDn: conf.bindDn, | ||||
|         bindCredentials: conf.bindCredentials, | ||||
|         searchBase: conf.searchBase, | ||||
|         searchFilter: conf.searchFilter, | ||||
|         searchAttributes: ['displayName', 'name', 'cn', 'mail'], | ||||
|         tlsOptions: (conf.tlsEnabled) ? { | ||||
|           ca: [ | ||||
|             fs.readFileSync(conf.tlsCertPath) | ||||
|           ] | ||||
|         } : {} | ||||
|       }, | ||||
|       usernameField: 'email', | ||||
|       passReqToCallback: false | ||||
|     }, (profile, cb) => { | ||||
|       profile.provider = 'ldap' | ||||
|       profile.id = profile.dn | ||||
|       wiki.db.User.processProfile(profile).then((user) => { | ||||
|         return cb(null, user) || true | ||||
|       }).catch((err) => { | ||||
|         return cb(err, null) || true | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
| @@ -8,27 +8,25 @@ | ||||
|  | ||||
| const LocalStrategy = require('passport-local').Strategy | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.local && wiki.config.auth.local.enabled) { | ||||
|     passport.use('local', | ||||
|       new LocalStrategy({ | ||||
|         usernameField: 'email', | ||||
|         passwordField: 'password' | ||||
|       }, (uEmail, uPassword, done) => { | ||||
|         wiki.db.User.findOne({ email: uEmail, provider: 'local' }).then((user) => { | ||||
|           if (user) { | ||||
|             return user.validatePassword(uPassword).then(() => { | ||||
|               return done(null, user) || true | ||||
|             }).catch((err) => { | ||||
|               return done(err, null) | ||||
|             }) | ||||
|           } else { | ||||
|             return done(new Error('INVALID_LOGIN'), null) | ||||
|           } | ||||
|         }).catch((err) => { | ||||
|           done(err, null) | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   passport.use('local', | ||||
|     new LocalStrategy({ | ||||
|       usernameField: 'email', | ||||
|       passwordField: 'password' | ||||
|     }, (uEmail, uPassword, done) => { | ||||
|       wiki.db.User.findOne({ email: uEmail, provider: 'local' }).then((user) => { | ||||
|         if (user) { | ||||
|           return user.validatePassword(uPassword).then(() => { | ||||
|             return done(null, user) || true | ||||
|           }).catch((err) => { | ||||
|             return done(err, null) | ||||
|           }) | ||||
|         } else { | ||||
|           return done(new Error('INVALID_LOGIN'), null) | ||||
|         } | ||||
|       }).catch((err) => { | ||||
|         done(err, null) | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
| @@ -8,20 +8,18 @@ | ||||
|  | ||||
| const WindowsLiveStrategy = require('passport-windowslive').Strategy | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.microsoft && wiki.config.auth.microsoft.enabled) { | ||||
|     passport.use('windowslive', | ||||
|       new WindowsLiveStrategy({ | ||||
|         clientID: wiki.config.auth.microsoft.clientId, | ||||
|         clientSecret: wiki.config.auth.microsoft.clientSecret, | ||||
|         callbackURL: wiki.config.host + '/login/ms/callback' | ||||
|       }, function (accessToken, refreshToken, profile, cb) { | ||||
|         wiki.db.User.processProfile(profile).then((user) => { | ||||
|           return cb(null, user) || true | ||||
|         }).catch((err) => { | ||||
|           return cb(err, null) || true | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   passport.use('windowslive', | ||||
|     new WindowsLiveStrategy({ | ||||
|       clientID: conf.clientId, | ||||
|       clientSecret: conf.clientSecret, | ||||
|       callbackURL: conf.callbackURL | ||||
|     }, function (accessToken, refreshToken, profile, cb) { | ||||
|       wiki.db.User.processProfile(profile).then((user) => { | ||||
|         return cb(null, user) || true | ||||
|       }).catch((err) => { | ||||
|         return cb(err, null) || true | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
| @@ -8,20 +8,18 @@ | ||||
|  | ||||
| const SlackStrategy = require('passport-slack').Strategy | ||||
|  | ||||
| module.exports = (passport) => { | ||||
|   if (wiki.config.auth.slack && wiki.config.auth.slack.enabled) { | ||||
|     passport.use('slack', | ||||
|       new SlackStrategy({ | ||||
|         clientID: wiki.config.auth.slack.clientId, | ||||
|         clientSecret: wiki.config.auth.slack.clientSecret, | ||||
|         callbackURL: wiki.config.host + '/login/slack/callback' | ||||
|       }, (accessToken, refreshToken, profile, cb) => { | ||||
|         wiki.db.User.processProfile(profile).then((user) => { | ||||
|           return cb(null, user) || true | ||||
|         }).catch((err) => { | ||||
|           return cb(err, null) || true | ||||
|         }) | ||||
|       } | ||||
|       )) | ||||
|   } | ||||
| module.exports = (passport, conf) => { | ||||
|   passport.use('slack', | ||||
|     new SlackStrategy({ | ||||
|       clientID: conf.clientId, | ||||
|       clientSecret: conf.clientSecret, | ||||
|       callbackURL: conf.callbackURL | ||||
|     }, (accessToken, refreshToken, profile, cb) => { | ||||
|       wiki.db.User.processProfile(profile).then((user) => { | ||||
|         return cb(null, user) || true | ||||
|       }).catch((err) => { | ||||
|         return cb(err, null) || true | ||||
|       }) | ||||
|     } | ||||
|     )) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user