cleaning last setup step
This commit is contained in:
@@ -1,10 +1,8 @@
|
|||||||
|
const URL = require('url')
|
||||||
const log = require('../../log')
|
const log = require('../../log')
|
||||||
const db = require('../models/index.js')
|
const db = require('../models/index.js')
|
||||||
const Umzug = require('umzug')
|
|
||||||
const path = require('path')
|
|
||||||
const config = require('../../config')
|
const config = require('../../config')
|
||||||
const Sequelize = require('sequelize')
|
const settingsController = require('./settings')
|
||||||
|
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
const { promisify } = require('util')
|
const { promisify } = require('util')
|
||||||
const randomBytes = promisify(crypto.randomBytes)
|
const randomBytes = promisify(crypto.randomBytes)
|
||||||
@@ -26,59 +24,63 @@ const setupController = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const sequelize = await db.connect(dbConf)
|
// try to connect
|
||||||
const users = await sequelize.query('SELECT * from users').catch(e => {})
|
dbConf.logging = false
|
||||||
config.db = dbConf
|
await db.connect(dbConf)
|
||||||
if (users && users.length) {
|
|
||||||
|
// is empty ?
|
||||||
|
const isEmpty = await db.isEmpty()
|
||||||
|
if (!isEmpty) {
|
||||||
log.warn(' ⚠ Non empty db! Please move your current db elsewhere than retry.')
|
log.warn(' ⚠ Non empty db! Please move your current db elsewhere than retry.')
|
||||||
return res.status(400).send(' ⚠ Non empty db! Please move your current db elsewhere than retry.')
|
return res.status(400).send(' ⚠ Non empty db! Please move your current db elsewhere than retry.')
|
||||||
} else {
|
}
|
||||||
// run migrations...
|
|
||||||
const umzug = new Umzug({
|
await db.runMigrations()
|
||||||
storage: 'sequelize',
|
|
||||||
storageOptions: { sequelize },
|
config.db = dbConf
|
||||||
logging: log.debug.bind(log),
|
config.firstrun = false
|
||||||
migrations: {
|
config.db.logging = false
|
||||||
wrap: fun => {
|
const settingsController = require('./settings')
|
||||||
return () =>
|
await settingsController.load()
|
||||||
fun(sequelize.queryInterface, Sequelize).catch(e => {
|
return res.sendStatus(200)
|
||||||
log.error(e)
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
path: path.resolve(__dirname, '..', '..', 'migrations')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
await umzug.up()
|
|
||||||
config.firstrun = false
|
|
||||||
config.db.logging = false
|
|
||||||
const settingsController = require('./settings')
|
|
||||||
await settingsController.load()
|
|
||||||
return res.sendStatus(200)
|
|
||||||
}
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return res.status(400).send(String(e))
|
return res.status(400).send(String(e))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async restart (req, res) {
|
async restart (req, res) {
|
||||||
config.write()
|
|
||||||
|
|
||||||
// create admin user
|
try {
|
||||||
const password = await randomString()
|
|
||||||
const email = `admin@${req.settings.hostname}`
|
|
||||||
const User = require('../models/user')
|
|
||||||
await User.create({
|
|
||||||
email,
|
|
||||||
password,
|
|
||||||
is_admin: true,
|
|
||||||
is_active: true
|
|
||||||
})
|
|
||||||
|
|
||||||
res.json({ password, email })
|
// write configuration
|
||||||
|
config.write()
|
||||||
|
|
||||||
// exit process so pm2 || docker could restart me
|
// calculate default settings values
|
||||||
process.exit()
|
await settingsController.set('theme.is_dark', true)
|
||||||
|
await settingsController.set('instance_name', settingsController.settings.title.toLowerCase().replace(/ /g, ''))
|
||||||
|
await settingsController.set('baseurl', req.protocol + '://' + req.headers.host)
|
||||||
|
await settingsController.set('hostname', new URL.URL(settingsController.settings.baseurl).hostname)
|
||||||
|
|
||||||
|
// create admin
|
||||||
|
const password = await randomString()
|
||||||
|
const email = `admin@${settingsController.settings.hostname}`
|
||||||
|
const User = require('../models/user')
|
||||||
|
await User.create({
|
||||||
|
email,
|
||||||
|
password,
|
||||||
|
is_admin: true,
|
||||||
|
is_active: true
|
||||||
|
})
|
||||||
|
|
||||||
|
res.json({ password, email })
|
||||||
|
|
||||||
|
// exit process so pm2 || docker could restart me || service
|
||||||
|
log.info(`Admin: ${email} / password: ${password}`)
|
||||||
|
log.info('Restart needed')
|
||||||
|
process.exit()
|
||||||
|
} catch (e) {
|
||||||
|
return res.status(400).send(String(e))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user