A simple file sharing site with an easy to use API and online panel.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

58 рядки
1.8KB

  1. const express = require('express');
  2. const router = express.Router();
  3. const ModelPath = '../../models/';
  4. const User = require(ModelPath + 'User.js');
  5. const verifyBody = require('../../util/verifyBody');
  6. const authenticate = require('../../util/auth/authenticateRequest');
  7. const getParams = [
  8. {name: 'username', type: 'string', optional: true},
  9. {name: 'displayname', type: 'string', optional: true}];
  10. router.get('/get', authenticate('user.get'), verifyBody(getParams), async (req, res) => {
  11. let query = {};
  12. if (req.body.username)
  13. query.username = req.body.username;
  14. if (req.body.displayname)
  15. query.displayname = req.body.displayname;
  16. //const users = User.find(query, 'username displayname scope uploadCount uploadSize date banned');
  17. const users = await User.find(query);
  18. res.status(200).json(users);
  19. });
  20. const banParams = [{name: 'username', type: 'string'}];
  21. router.post('/ban', authenticate('user.ban'), verifyBody(banParams), async (req, res) => {
  22. const user = await User.findOne({username: req.body.username});
  23. if (!user)
  24. return res.status(422).json({message: 'User not found.'});
  25. if (user.banned)
  26. return res.status(422).json({message: 'User already banned.'});
  27. user.banned = true;
  28. await user.save();
  29. res.status(200).json({message: 'User banned.'});
  30. });
  31. const unbanParams = [{name: 'username', type: 'string'}];
  32. router.post('/unban', authenticate('user.unban'), verifyBody(unbanParams), async (req, res) => {
  33. const user = await User.findOne({username: req.body.username});
  34. if (!user)
  35. return res.status(422).json({message: 'User not found.'});
  36. if (!user.banned)
  37. return res.status(422).json({message: 'User not banned.'});
  38. user.banned = false;
  39. await user.save();
  40. res.status(200).json({message: 'User unbanned.'});
  41. });
  42. module.exports = router;