Files
Hydro/hydro/install.js
T
masnn f9468536de upgrade dep:
css-loader 0.28->3.5
del 4.1->5.1
eslint 5.18->6.8
eslint-config-airbnb 17.1->18.1
eslint-loader 2.1->4.0
file-loader 2.0->6.0
fs.extra 8.0->9.0
gulp 2.0->3.0
gulp-nunjucks 4.0->5.0
json-loader 0.5->Removed
style-loader 0.23->1.1
uglifyjs-webpack-plugin 1.3->2.2
yargs 13.2->15.3
katex 0.10->0.11
react-monaco-editor 0.35->0.36
timeage-react 1.2->3.0
timeago.js 3.0->4.0
uuid 3.3->7.0
2020-04-15 12:47:55 +08:00

66 lines
2.3 KiB
JavaScript

require('./utils');
const
Mongo = require('mongodb'),
{ defaults } = require('lodash'),
builtin = require('./model/builtin'),
pwhash = require('./lib/pwhash'),
options = require('./options'),
{ udoc } = require('./interface');
async function run() {
let mongourl = 'mongodb://';
if (options.db.username) mongourl += options.db.username + ':' + options.db.password + '@';
mongourl += `${options.db.host}:${options.db.port}/${options.db.name}`;
let Database = await Mongo.MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true });
let db = Database.db(options.db.name);
let coll_user = db.collection('user');
let coll_role = db.collection('role');
let coll_blacklist = db.collection('blacklist');
let coll_token = db.collection('token');
async function createUser() {
let salt = pwhash.salt();
await coll_user.insertMany([
defaults({
_id: 0,
uname: 'Hydro',
unameLower: 'hydro',
mail: 'hydro@hydro',
mailLower: 'hydro@hydro',
role: 'guest'
}, udoc),
defaults({
_id: 1,
mail: 'guest@hydro',
mailLower: 'guest@hydro',
uname: 'Guest',
unameLower: 'guest',
role: 'guest'
}, udoc),
defaults({
_id: -1,
mail: 'root@hydro',
mailLower: 'root@hydro',
uname: 'Root',
unameLower: 'root',
hash: pwhash.hash('rootroot', salt),
salt,
gravatar: 'root@hydro',
role: 'admin'
}, udoc)
]);
}
await coll_user.createIndex('unameLower', { unique: true });
await coll_user.createIndex('mailLower', { sparse: true });
await coll_role.insertMany(builtin.BUILTIN_ROLES);
await coll_blacklist.createIndex('expireAt', { expireAfterSeconds: 0 });
await coll_token.createIndex([{ uid: 1 }, { tokenType: 1 }, { updateAt: -1 }], { sparse: true });
await coll_token.createIndex('expireAt', { expireAfterSeconds: 0 });
await createUser();
console.log('Installed');
process.exit(0);
}
run().catch(e => {
console.error(e);
process.exit(1);
});