report.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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) => {
  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) {
  29. if(e instanceof Sequelize.ValidationError) {
  30. res.status(400)
  31. res.json(e)
  32. } else {
  33. console.log(e)
  34. res.status(500)
  35. res.json({
  36. errors: [Errors.unknown]
  37. })
  38. }
  39. }
  40. })
  41. router.all('*', (req, res, next) => {
  42. if(req.session.admin) {
  43. next()
  44. } else {
  45. res.status(401)
  46. res.json({
  47. errors: [Errors.requestNotAuthorized]
  48. })
  49. }
  50. })
  51. router.get('/', async (req, res) => {
  52. try {
  53. let reports = await Report.findAll({
  54. include: [
  55. {model: User, as: 'FlaggedByUser' },
  56. { model: Post, include: Post.includeOptions() }
  57. ]
  58. })
  59. res.json(reports)
  60. } catch (e) {
  61. console.log(e)
  62. res.status(500)
  63. res.json({
  64. errors: [Errors.unknown]
  65. })
  66. }
  67. })
  68. module.exports = router