/* global __appdir */ var path = require('path') var db = require(path.join(__appdir, 'lib', 'sequelize')) var express = require('express') const { decorateApp } = require('@awaitjs/express') var router = decorateApp(express.Router()) // Permission check middleware router.all(['', '/:x'], async (req, res, next) => { switch (req.method) { case 'GET': if (!await req.user.hasPermission('systemlog.view')) return res.status(403).send({ error: 'Missing permission', permission: 'systemlog.view' }) break default: return res.status(400).send() } next() }) // ############################################################################ // ########################### GET requests ################################# router.getAsync('', async (req, res) => { const where = {} if (req.query.from || req.query.to) { where.timestamp = {} if (req.query.from) where.timestamp[db.Op.gte] = req.query.from if (req.query.to) where.timestamp[db.Op.lte] = req.query.to } if (req.query.categories) where.category = req.query.categories.split(',') if (req.query.clients) where.clientId = req.query.clients.split(',') if (req.query.groups) where.groupId = req.query.groups.split(',') if (req.query.users) where.userId = req.query.users.split(',') const log = await db.log.findAll({ where, include: ['client', 'group', 'user'], order: [['id', 'DESC']] }) log.forEach(entry => { if (entry.clientSnapshot) entry.clientSnapshot = JSON.parse(entry.clientSnapshot) if (entry.groupSnapshot) entry.groupSnapshot = JSON.parse(entry.groupSnapshot) if (entry.userSnapshot) entry.userSnapshot = JSON.parse(entry.userSnapshot) }) res.send(log) }) // ############################################################################ // ############################################################################ module.exports.router = router