log.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. let express = require('express')
  2. let router = express.Router()
  3. const Errors = require('../lib/errors')
  4. let { Sequelize, Log, Thread, User } = require('../models')
  5. router.post('/', async (req, res) => {
  6. try {
  7. let thread, user
  8. if(req.body.route === 'thread') {
  9. thread = await Thread.findById(req.body.resourceId)
  10. if(!thread) throw Errors.sequelizeValidation(Sequelize, {
  11. error: 'thread does not exist',
  12. value: req.body.resourceId
  13. })
  14. } else if(
  15. req.body.route === 'userPosts' ||
  16. req.body.route === 'userThreads'
  17. ) {
  18. user = await User.findById(req.body.resourceId)
  19. if(!user) throw Errors.sequelizeValidation(Sequelize, {
  20. error: 'user does not exist',
  21. value: req.body.resourceId
  22. })
  23. } else if(
  24. (req.body.route === 'settingsGeneral' ||
  25. req.body.route === 'settingsAccount') &&
  26. !req.session.loggedIn
  27. ) {
  28. throw Errors.requestNotAuthorized
  29. }
  30. let log = await Log.create({
  31. route: req.body.route
  32. })
  33. if(thread) await log.setThread(thread)
  34. if(user) await log.setUser(user)
  35. if(req.session.username) {
  36. let sessionUser = await User.findOne({
  37. where: { username: req.session.username }
  38. })
  39. await log.setSessionUser(sessionUser)
  40. }
  41. res.json(log.toJSON())
  42. } catch (e) {
  43. if(e.name in Errors) {
  44. res.status(401)
  45. res.json({
  46. errors: [e]
  47. })
  48. } else if(e instanceof Sequelize.ValidationError) {
  49. res.status(400)
  50. res.json(e)
  51. } else {
  52. console.log(e)
  53. res.status(500)
  54. res.json({
  55. errors: Errors.unknown
  56. })
  57. }
  58. }
  59. })
  60. module.exports = router