| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- 'use strict'
 
- /* global wiki */
 
- const _ = require('lodash')
 
- const passport = require('passport')
 
- const fs = require('fs-extra')
 
- const path = require('path')
 
- module.exports = {
 
-   strategies: {},
 
-   init() {
 
-     this.passport = passport
 
-     // Serialization user methods
 
-     passport.serializeUser(function (user, done) {
 
-       done(null, user._id)
 
-     })
 
-     passport.deserializeUser(function (id, done) {
 
-       wiki.db.User.findById(id).then((user) => {
 
-         if (user) {
 
-           done(null, user)
 
-         } else {
 
-           done(new Error(wiki.lang.t('auth:errors:usernotfound')), null)
 
-         }
 
-         return true
 
-       }).catch((err) => {
 
-         done(err, null)
 
-       })
 
-     })
 
-     // Load authentication strategies
 
-     wiki.config.auth.strategies.local = {}
 
-     _.forOwn(wiki.config.auth.strategies, (strategyConfig, strategyKey) => {
 
-       strategyConfig.callbackURL = `${wiki.config.site.host}${wiki.config.site.path}/login/${strategyKey}/callback`
 
-       let strategy = require(`../authentication/${strategyKey}`)
 
-       strategy.init(passport, strategyConfig)
 
-       fs.readFile(path.join(wiki.ROOTPATH, `assets/svg/auth-icon-${strategyKey}.svg`), 'utf8').then(iconData => {
 
-         strategy.icon = iconData
 
-       }).catch(err => {
 
-         if (err.code === 'ENOENT') {
 
-           strategy.icon = '[missing icon]'
 
-         } else {
 
-           wiki.logger.error(err)
 
-         }
 
-       })
 
-       this.strategies[strategy.key] = strategy
 
-       wiki.logger.info(`Authentication Provider ${strategyKey}: OK`)
 
-     })
 
-     // Create Guest account for first-time
 
-     wiki.db.User.findOne({
 
-       where: {
 
-         provider: 'local',
 
-         email: 'guest@example.com'
 
-       }
 
-     }).then((c) => {
 
-       if (c < 1) {
 
-         return wiki.db.User.create({
 
-           provider: 'local',
 
-           email: 'guest@example.com',
 
-           name: 'Guest',
 
-           password: '',
 
-           role: 'guest'
 
-         }).then(() => {
 
-           wiki.logger.info('[AUTH] Guest account created successfully!')
 
-           return true
 
-         }).catch((err) => {
 
-           wiki.logger.error('[AUTH] An error occured while creating guest account:')
 
-           wiki.logger.error(err)
 
-           return err
 
-         })
 
-       }
 
-     })
 
-     // .then(() => {
 
-     //   if (process.env.WIKI_JS_HEROKU) {
 
-     //     return wiki.db.User.findOne({ provider: 'local', email: process.env.WIKI_ADMIN_EMAIL }).then((c) => {
 
-     //       if (c < 1) {
 
-     //         // Create root admin account (HEROKU ONLY)
 
-     //         return wiki.db.User.create({
 
-     //           provider: 'local',
 
-     //           email: process.env.WIKI_ADMIN_EMAIL,
 
-     //           name: 'Administrator',
 
-     //           password: '$2a$04$MAHRw785Xe/Jd5kcKzr3D.VRZDeomFZu2lius4gGpZZ9cJw7B7Mna', // admin123 (default)
 
-     //           role: 'admin'
 
-     //         }).then(() => {
 
-     //           wiki.logger.info('[AUTH] Root admin account created successfully!')
 
-     //           return true
 
-     //         }).catch((err) => {
 
-     //           wiki.logger.error('[AUTH] An error occured while creating root admin account:')
 
-     //           wiki.logger.error(err)
 
-     //           return err
 
-     //         })
 
-     //       } else { return true }
 
-     //     })
 
-     //   } else { return true }
 
-     // })
 
-     return this
 
-   }
 
- }
 
 
  |