summaryrefslogtreecommitdiffstats
path: root/server/api/wakerequests.js
blob: 6f6faf33079a179e80e27dd0c6b2f7d30bebc83c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* global __appdir */
var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))
const wolHelper = require(path.join(__appdir, 'lib', 'wolhelper'))
var express = require('express')
const { decorateApp } = require('@awaitjs/express')
var router = decorateApp(express.Router())
const log = require(path.join(__appdir, 'lib', 'log'))

// Permission check middleware
router.all(['', '/:x'], async (req, res, next) => {
  switch (req.method) {
    case 'POST':
      if (!await req.user.hasPermission('wakerequests.send')) return res.status(403).send({ error: 'Missing permission', permission: 'wakerequests.send' })
      break

    default:
      return res.status(400).send()
  }

  next()
})

router.postAsync('', async (req, res) => {
  const clients = await db.client.findAll({ where: { id: req.body.clients } })
  await log({
    category: 'WAKE_ON_LAN',
    description: 'Wake on Lan signal to ' + clients.length + ' clients initiated by user.',
    userId: req.user.id
  })
  wolHelper.wakeUp(clients)
  res.status(200).end()
})

module.exports.router = router