settings.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. let express = require('express')
  2. let router = express.Router()
  3. const Errors = require('../lib/errors')
  4. let { Settings } = require('../models')
  5. router.get('/', async (req, res) => {
  6. try {
  7. let settings = await Settings.get()
  8. res.json(settings.toJSON())
  9. } catch (e) {
  10. res.status(500)
  11. res.json({
  12. errors: [Errors.unknown]
  13. })
  14. }
  15. })
  16. router.all('*', (req, res, next) => {
  17. if(req.session.admin) {
  18. next()
  19. } else {
  20. res.status(401)
  21. res.json({
  22. errors: [Errors.requestNotAuthorized]
  23. })
  24. }
  25. })
  26. router.put('/', async (req, res) => {
  27. let validationErrors = []
  28. let params = {}
  29. try {
  30. if(req.body.forumName !== undefined) {
  31. if(typeof req.body.forumName !== 'string') {
  32. validationErrors.push(Errors.invalidParameterType('forumName', 'string'))
  33. } else {
  34. params.forumName = req.body.forumName
  35. }
  36. }
  37. if(req.body.forumDescription !== undefined) {
  38. if(typeof req.body.forumDescription !== 'string') {
  39. validationErrors.push(Errors.invalidParameterType('forumDescription', 'string'))
  40. } else {
  41. params.forumDescription = req.body.forumDescription
  42. }
  43. }
  44. if(validationErrors.length) throw Errors.VALIDAITON_ERROR
  45. let updatedSettings = await Settings.set(params)
  46. res.json(updatedSettings.toJSON())
  47. } catch (e) {
  48. if(e === Errors.VALIDAITON_ERROR) {
  49. res.status(400)
  50. res.json({
  51. errors: [validationErrors]
  52. })
  53. } else {
  54. res.status(500)
  55. res.json({
  56. errors: [Errors.unknown]
  57. })
  58. }
  59. }
  60. })
  61. module.exports = router