settings.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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({
  47. forumName: req.body.forumName,
  48. forumDescription: req.body.forumDescription
  49. })
  50. } catch (e) {
  51. if(e === Errors.VALIDAITON_ERROR) {
  52. res.status(400)
  53. res.json({
  54. errors: [validationErrors]
  55. })
  56. } else {
  57. console.log(e)
  58. res.status(500)
  59. res.json({
  60. errors: [Errors.unknown]
  61. })
  62. }
  63. }
  64. })
  65. module.exports = router