42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
|
|
//middleware
|
|
router.use((req, res, next) => {
|
|
//make sure the account is an admin
|
|
if (req.cookies['admin'] !== process.env.SESSION_ADMIN) {
|
|
return res.status(401).send('invalid admin status');
|
|
} else {
|
|
next();
|
|
}
|
|
});
|
|
|
|
//basic account ban management
|
|
router.get('/banned', require('./banned'));
|
|
router.post('/ban', require('./ban'));
|
|
router.post('/unban', require('./unban'));
|
|
|
|
//DOCS: ensure that there is at least one administration account
|
|
const bcrypt = require('bcryptjs');
|
|
const { accounts } = require('../database/models');
|
|
|
|
(async () => {
|
|
const admin = await accounts.findOne({
|
|
where: {
|
|
privilege: 'administrator'
|
|
}
|
|
});
|
|
|
|
if (admin == null) {
|
|
await accounts.create({
|
|
privilege: 'administrator',
|
|
email: `admin@${process.env.WEB_ADDRESS}`,
|
|
username: `admin`,
|
|
hash: await bcrypt.hash('password', await bcrypt.genSalt(11))
|
|
});
|
|
|
|
console.log(`Created default admin account (email: admin@${process.env.WEB_ADDRESS}; password: password)`);
|
|
}
|
|
})();
|
|
|
|
module.exports = router; |