settings.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. const express = require('express');
  2. const validator = require('../../lib/validator');
  3. const jwtdecode = require('../../lib/express/jwt-decode');
  4. const internalSetting = require('../../internal/setting');
  5. const apiValidator = require('../../lib/validator/api');
  6. let router = express.Router({
  7. caseSensitive: true,
  8. strict: true,
  9. mergeParams: true
  10. });
  11. /**
  12. * /api/settings
  13. */
  14. router
  15. .route('/')
  16. .options((req, res) => {
  17. res.sendStatus(204);
  18. })
  19. .all(jwtdecode())
  20. /**
  21. * GET /api/settings
  22. *
  23. * Retrieve all settings
  24. */
  25. .get((req, res, next) => {
  26. internalSetting.getAll(res.locals.access)
  27. .then((rows) => {
  28. res.status(200)
  29. .send(rows);
  30. })
  31. .catch(next);
  32. });
  33. /**
  34. * Specific setting
  35. *
  36. * /api/settings/something
  37. */
  38. router
  39. .route('/:setting_id')
  40. .options((req, res) => {
  41. res.sendStatus(204);
  42. })
  43. .all(jwtdecode())
  44. /**
  45. * GET /settings/something
  46. *
  47. * Retrieve a specific setting
  48. */
  49. .get((req, res, next) => {
  50. validator({
  51. required: ['setting_id'],
  52. additionalProperties: false,
  53. properties: {
  54. setting_id: {
  55. $ref: 'definitions#/definitions/setting_id'
  56. }
  57. }
  58. }, {
  59. setting_id: req.params.setting_id
  60. })
  61. .then((data) => {
  62. return internalSetting.get(res.locals.access, {
  63. id: data.setting_id
  64. });
  65. })
  66. .then((row) => {
  67. res.status(200)
  68. .send(row);
  69. })
  70. .catch(next);
  71. })
  72. /**
  73. * PUT /api/settings/something
  74. *
  75. * Update and existing setting
  76. */
  77. .put((req, res, next) => {
  78. apiValidator({$ref: 'endpoints/settings#/links/1/schema'}, req.body)
  79. .then((payload) => {
  80. payload.id = req.params.setting_id;
  81. return internalSetting.update(res.locals.access, payload);
  82. })
  83. .then((result) => {
  84. res.status(200)
  85. .send(result);
  86. })
  87. .catch(next);
  88. });
  89. module.exports = router;