Started working on the admin panel
This commit is contained in:
@@ -40,6 +40,10 @@ const route = async (req, res) => {
|
||||
req.session.account = account;
|
||||
res.cookie('loggedin', process.env.WEB_ADDRESS);
|
||||
|
||||
if (account.privilege == 'administrator') {
|
||||
res.cookie('admin', process.env.SESSION_ADMIN);
|
||||
}
|
||||
|
||||
//cancel deletion if any
|
||||
await accounts.update({ deletion: null }, {
|
||||
where: {
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
const { Op } = require('sequelize');
|
||||
const { bannedEmails, accounts } = require('../database/models');
|
||||
|
||||
const route = async (req, res) => {
|
||||
//make sure the account is an admin
|
||||
if (req.cookies['admin'] !== process.env.SESSION_ADMIN) {
|
||||
return res.status(401).send('invalid admin status');
|
||||
}
|
||||
|
||||
//merge the banned accounts with the account data, if any
|
||||
const data = await bannedEmails.findAll()
|
||||
.then(bans => bans.map(async ban => {
|
||||
//find a matching account
|
||||
const account = await accounts.findOne({
|
||||
attrubutes: ['username', 'privilege'],
|
||||
where: {
|
||||
email: {
|
||||
[Op.eq]: ban.email
|
||||
}
|
||||
}
|
||||
}) || {};
|
||||
|
||||
//merge the data and return (becomes a promise)
|
||||
return {
|
||||
username: account.username,
|
||||
email: ban.email,
|
||||
privilege: account.privilege,
|
||||
expiry: ban.expiry,
|
||||
reason: ban.reason
|
||||
};
|
||||
}))
|
||||
.then(promises => Promise.all(promises)) //resolve promises
|
||||
.catch(e => console.error(e))
|
||||
;
|
||||
|
||||
res.status(200).json(data);
|
||||
};
|
||||
|
||||
module.exports = route;
|
||||
@@ -0,0 +1,9 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
|
||||
//basic account management
|
||||
router.post('/banned', require('./banned'));
|
||||
//router.post('/ban', require('./ban'));
|
||||
//router.post('/unban', require('./unban'));
|
||||
|
||||
module.exports = router;
|
||||
@@ -22,6 +22,9 @@ const database = require('./database');
|
||||
//account management
|
||||
app.use('/api/accounts', require('./accounts'));
|
||||
|
||||
//administration
|
||||
app.use('/api/admin', require('./admin'));
|
||||
|
||||
//send static files
|
||||
app.use('/', express.static(path.resolve(__dirname, 'public')));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user