feat: config wizard save

This commit is contained in:
NGPixel
2017-12-16 23:41:16 -05:00
parent 1f350172b9
commit 18dee58a06
12 changed files with 669 additions and 440 deletions

View File

@@ -237,6 +237,7 @@ module.exports = () => {
}
// Update config file
wiki.logger.info('Writing config file to disk...')
let confRaw = await fs.readFileAsync(path.join(wiki.ROOTPATH, 'config.yml'), 'utf8')
let conf = yaml.safeLoad(confRaw)
@@ -256,18 +257,60 @@ module.exports = () => {
wiki.config.uploads = wiki.config.uploads || {}
// Site namespace
wiki.config.site.title = req.body.title
wiki.config.site.path = req.body.path
wiki.config.site.lang = req.body.lang
wiki.config.site.rtl = _.includes(wiki.data.rtlLangs, req.body.lang)
wiki.config.site.sessionSecret = (await crypto.randomBytesAsync(32)).toString('hex')
_.set(wiki.config.site, 'title', req.body.title)
_.set(wiki.config.site, 'path', req.body.path)
_.set(wiki.config.site, 'lang', req.body.lang)
_.set(wiki.config.site, 'rtl', _.includes(wiki.data.rtlLangs, req.body.lang))
_.set(wiki.config.site, 'sessionSecret', (await crypto.randomBytesAsync(32)).toString('hex'))
// Auth namespace
wiki.config.auth.public = (req.body.public === 'true')
_.set(wiki.config.auth, 'public', req.body.public === 'true')
_.set(wiki.config.auth, 'strategies.local.allowSelfRegister', req.body.selfRegister === 'true')
// Git namespace
_.set(wiki.config.git, 'enabled', req.body.gitUseRemote === 'true')
if (wiki.config.git.enabled) {
_.set(wiki.config.git, 'url', req.body.gitUrl)
_.set(wiki.config.git, 'branch', req.body.gitBranch)
_.set(wiki.config.git, 'author.defaultEmail', req.body.gitServerEmail)
_.set(wiki.config.git, 'author.useUserEmail', req.body.gitShowUserEmail)
_.set(wiki.config.git, 'sslVerify', req.body.gitAuthSSL === 'true')
_.set(wiki.config.git, 'auth.type', req.body.gitAuthType)
switch (wiki.config.git.auth.type) {
case 'basic':
_.set(wiki.config.git, 'auth.user', req.body.gitAuthUser)
_.set(wiki.config.git, 'auth.pass', req.body.gitAuthPass)
break
case 'ssh':
_.set(wiki.config.git, 'auth.keyPath', req.body.gitAuthSSHKey)
break
case 'sshenv':
_.set(wiki.config.git, 'auth.keyEnv', req.body.gitAuthSSHKeyEnv)
break
case 'sshdb':
_.set(wiki.config.git, 'auth.keyContents', req.body.gitAuthSSHKeyDB)
break
}
}
// Logging namespace
wiki.config.logging.telemetry = (req.body.telemetry === 'true')
// Save config to DB
wiki.logger.info('Persisting config to DB...')
await wiki.configSvc.saveToDb()
// Create root administrator
wiki.logger.info('Creating root administrator...')
await wiki.db.User.upsert({
email: req.body.adminEmail,
provider: 'local',
password: await wiki.db.User.hashPassword(req.body.adminPassword),
name: 'Administrator',
role: 'admin',
tfaIsActive: false
})
res.json({ ok: true })
} catch (err) {
res.json({ ok: false, error: err.message })