const _ = require('lodash')

/* global WIKI */

// ------------------------------------
// SAML Account
// ------------------------------------

const SAMLStrategy = require('passport-saml').Strategy

module.exports = {
  init (passport, conf) {
    passport.use('saml',
      new SAMLStrategy({
        callbackURL: conf.callbackURL,
        entryPoint: conf.entryPoint,
        issuer: conf.issuer,
        audience: conf.audience,
        cert: _.split(conf.cert, '|'),
        privateCert: conf.privateCert,
        decryptionPvk: conf.decryptionPvk,
        signatureAlgorithm: conf.signatureAlgorithm,
        identifierFormat: conf.identifierFormat,
        acceptedClockSkewMs: _.toSafeInteger(conf.acceptedClockSkewMs),
        disableRequestedAuthnContext: conf.disableRequestedAuthnContext,
        authnContext: conf.authnContext,
        forceAuthn: conf.forceAuthn,
        providerName: conf.providerName,
        skipRequestCompression: conf.skipRequestCompression,
        authnRequestBinding: conf.authnRequestBinding
      }, (profile, cb) => {
        WIKI.models.users.processProfile(profile).then((user) => {
          return cb(null, user) || true
        }).catch((err) => {
          return cb(err, null) || true
        })
      })
    )
  }
}