| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | /* global WIKI */// ------------------------------------// LDAP Account// ------------------------------------const LdapStrategy = require('passport-ldapauth').Strategyconst fs = require('fs')const _ = require('lodash')module.exports = {  init (passport, conf) {    passport.use('ldap',      new LdapStrategy({        server: {          url: conf.url,          bindDn: conf.bindDn,          bindCredentials: conf.bindCredentials,          searchBase: conf.searchBase,          searchFilter: conf.searchFilter,          tlsOptions: (conf.tlsEnabled) ? {            rejectUnauthorized: conf.verifyTLSCertificate,            ca: [              fs.readFileSync(conf.tlsCertPath)            ]          } : {}        },        usernameField: 'email',        passwordField: 'password',        passReqToCallback: false      }, async (profile, cb) => {        try {          const userId = _.get(profile, conf.mappingUID, null)          if (!userId) {            throw new Error('Invalid Unique ID field mapping!')          }          const user = await WIKI.models.users.processProfile({            profile: {              id: userId,              email: _.get(profile, conf.mappingEmail, ''),              displayName: _.get(profile, conf.mappingDisplayName, '???'),              picture: _.get(profile, conf.mappingPicture, '')            },            providerKey: 'ldap'          })          cb(null, user)        } catch (err) {          if (WIKI.config.flags.ldapdebug) {            WIKI.logger.warn('LDAP LOGIN ERROR (c2): ', err)          }          cb(err, null)        }      }      ))  }}
 |