57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
/* eslint-disable no-console */
|
|
const bcrypt = require('bcrypt');
|
|
const moment = require('moment');
|
|
const Util = require('../../utils/Util');
|
|
|
|
exports.seed = async db => {
|
|
const now = moment.utc().toDate();
|
|
|
|
// Save environment variables to the database
|
|
try {
|
|
const defaults = Util.getEnvironmentDefaults();
|
|
const keys = Object.keys(defaults);
|
|
for await (const item of keys) {
|
|
Util.writeConfigToDb({
|
|
key: item,
|
|
value: defaults[item]
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
|
|
// Create admin user if it doesnt exist
|
|
const user = await db.table('users').where({ username: 'admin' }).first();
|
|
if (user) {
|
|
console.log();
|
|
console.log('=========================================================');
|
|
console.log('== admin account already exists, skipping. ==');
|
|
console.log('=========================================================');
|
|
console.log('== Run `pm2 start pm2.json` to start the service ==');
|
|
console.log('=========================================================');
|
|
console.log();
|
|
return;
|
|
}
|
|
try {
|
|
const hash = await bcrypt.hash('admin', 10);
|
|
await db.table('users').insert({
|
|
username: 'admin',
|
|
password: hash,
|
|
passwordEditedAt: now,
|
|
createdAt: now,
|
|
editedAt: now,
|
|
enabled: true,
|
|
isAdmin: true
|
|
});
|
|
console.log();
|
|
console.log('=========================================================');
|
|
console.log('== Successfully created the admin account. ==');
|
|
console.log('=========================================================');
|
|
console.log('== Run `pm2 start pm2.json` to start the service ==');
|
|
console.log('=========================================================');
|
|
console.log();
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
};
|