99 lines
3.1 KiB
JavaScript
99 lines
3.1 KiB
JavaScript
|
import express from 'express';
|
||
|
import controllers from '../../controllers';
|
||
|
|
||
|
const router = express.Router();
|
||
|
function runAsyncWrapper(callback) {
|
||
|
return function wrapper(req, res, next) {
|
||
|
callback(req, res, next)
|
||
|
.catch(next);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// probs should put middleware somewhere else
|
||
|
router.use(async (req, res, next) => {
|
||
|
const currentAdmin = await controllers.admin.isCurrentUserAdmin(true, req);
|
||
|
if (!currentAdmin.account) {
|
||
|
return res.status(401).json({ error: true, msg: 'UNAUTHORISED', status: 401 }).end();
|
||
|
}
|
||
|
if (!currentAdmin.isAdmin) {
|
||
|
return res.status(403).json({ error: true, msg: 'FORBIDDEN', status: 403 }).end();
|
||
|
}
|
||
|
return next();
|
||
|
});
|
||
|
|
||
|
// TODO
|
||
|
|
||
|
router.get('/user/:userId/ban/:ban', runAsyncWrapper(async (req, res) => {
|
||
|
const banResult = await controllers.admin.banAccount(req.params.ban, req.params.userId);
|
||
|
if (!banResult.success) {
|
||
|
return res.status(500).json(banResult);
|
||
|
}
|
||
|
|
||
|
return res.status(200).json(banResult);
|
||
|
}));
|
||
|
|
||
|
router.get('/user/:userId/get/devices', runAsyncWrapper(async (req, res) => {
|
||
|
if (!req.params.userId) {
|
||
|
return req.status(400).json({ error: true, msg: 'MISSING DATA', status: 400 });
|
||
|
}
|
||
|
|
||
|
return res.status(200).json({
|
||
|
success: true,
|
||
|
data: controllers.devices.getDevices(req.params.userId),
|
||
|
});
|
||
|
}));
|
||
|
|
||
|
router.get('/user/', runAsyncWrapper(async (req, res) => {
|
||
|
return res.status(200).json({ success: true, data: await controllers.users.getAllUsers() });
|
||
|
}));
|
||
|
|
||
|
router.get('/device/:dongle_id', runAsyncWrapper(async (req, res) => {
|
||
|
const { dongle_id: dongleId } = req.params;
|
||
|
if (!dongleId) {
|
||
|
return req.status(400).json({ error: true, msg: 'MISSING DATA', status: 400 });
|
||
|
}
|
||
|
|
||
|
const device = await controllers.devices.getDeviceFromDongleId(dongleId);
|
||
|
return res.status(200).json({ success: true, data: device });
|
||
|
}));
|
||
|
|
||
|
router.get('/device/:dongle_id/pair/:user_id', runAsyncWrapper(async (req, res) => {
|
||
|
const { dongle_id: dongleId, user_id: userId } = req.params;
|
||
|
if (!dongleId || !userId) {
|
||
|
return req.status(400).json({ error: true, msg: 'MISSING DATA', status: 400 });
|
||
|
}
|
||
|
|
||
|
const pairDeviceToAccountId = await controllers.devices.pairDeviceToAccountId(dongleId, userId);
|
||
|
return res.status(200).json(pairDeviceToAccountId);
|
||
|
}));
|
||
|
|
||
|
router.get('/device', runAsyncWrapper(async (req, res) => {
|
||
|
const filteredDevices = await controllers.devices.getAllDevicesFiltered();
|
||
|
return res.status(200).json({ success: true, data: filteredDevices });
|
||
|
}));
|
||
|
|
||
|
router.get('/device/:dongle_id/ignore/:ignore_uploads', runAsyncWrapper(async (req, res) => {
|
||
|
const { dongle_id: dongleId, ignore_uploads: ignoreUploads } = req.params;
|
||
|
if (!dongleId || !ignoreUploads) {
|
||
|
return req.status(400).json({ error: true, msg: 'MISSING DATA', status: 400 });
|
||
|
}
|
||
|
|
||
|
// TODO make this cleaner
|
||
|
let isIgnored = null;
|
||
|
switch (ignoreUploads) {
|
||
|
case 'true':
|
||
|
isIgnored = true;
|
||
|
break;
|
||
|
case 'false':
|
||
|
isIgnored = false;
|
||
|
break;
|
||
|
default:
|
||
|
return res.json({ error: true, msg: 'MISSING DATA' });
|
||
|
}
|
||
|
|
||
|
await controllers.devices.setIgnoredUploads(req.params.dongle_id, isIgnored);
|
||
|
return res.status(200).json({ success: true });
|
||
|
}));
|
||
|
|
||
|
export default router;
|