report.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. let express = require('express')
  2. let router = express.Router()
  3. let { User, Post, Report, Sequelize } = require('../models')
  4. const Errors = require('../lib/errors')
  5. router.all('*', (req, res, next) => {
  6. if(req.session.loggedIn) {
  7. next()
  8. } else {
  9. res.status(401)
  10. res.json({
  11. errors: [Errors.requestNotAuthorized]
  12. })
  13. }
  14. })
  15. router.post('/', async (req, res, next) => {
  16. try {
  17. let post = await Post.findById(req.body.postId)
  18. if(!post) throw Report.InvalidPostId(req.body.postId)
  19. let user = await User.findOne({
  20. where: { username: req.session.username }
  21. })
  22. let report = await Report.create({ reason: req.body.reason })
  23. report.setFlaggedByUser(user)
  24. report.setPost(post)
  25. res.json({
  26. success: true
  27. })
  28. } catch (e) { next(e) }
  29. })
  30. router.all('*', (req, res, next) => {
  31. if(req.session.admin) {
  32. next()
  33. } else {
  34. res.status(401)
  35. res.json({
  36. errors: [Errors.requestNotAuthorized]
  37. })
  38. }
  39. })
  40. router.get('/', async (req, res, next) => {
  41. try {
  42. let reports = await Report.findAll({
  43. include: [
  44. {model: User, as: 'FlaggedByUser' },
  45. { model: Post, include: Post.includeOptions() }
  46. ]
  47. })
  48. res.json(reports)
  49. } catch (e) { next(e) }
  50. })
  51. router.delete('/:id', async (req, res, next) => {
  52. try {
  53. let report = await Report.findById(req.params.id)
  54. if(!report) throw Report.InvalidPostId(req.params.id)
  55. await report.destroy()
  56. res.json({ success: true })
  57. } catch (e) { next(e) }
  58. })
  59. module.exports = router