site.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. const graphHelper = require('../../helpers/graph')
  2. const _ = require('lodash')
  3. /* global WIKI */
  4. module.exports = {
  5. Query: {
  6. async site() { return {} }
  7. },
  8. Mutation: {
  9. async site() { return {} }
  10. },
  11. SiteQuery: {
  12. async config(obj, args, context, info) {
  13. return {
  14. host: WIKI.config.host,
  15. title: WIKI.config.title,
  16. company: WIKI.config.company,
  17. contentLicense: WIKI.config.contentLicense,
  18. logoUrl: WIKI.config.logoUrl,
  19. ...WIKI.config.seo,
  20. ...WIKI.config.features,
  21. ...WIKI.config.security,
  22. uploadMaxFileSize: WIKI.config.uploads.maxFileSize,
  23. uploadMaxFiles: WIKI.config.uploads.maxFiles
  24. }
  25. }
  26. },
  27. SiteMutation: {
  28. async updateConfig(obj, args, context) {
  29. try {
  30. if (args.host) {
  31. let siteHost = _.trim(args.host)
  32. if (siteHost.endsWith('/')) {
  33. siteHost = siteHost.splice(0, -1)
  34. }
  35. WIKI.config.host = siteHost
  36. }
  37. if (args.title) {
  38. WIKI.config.title = _.trim(args.title)
  39. }
  40. if (args.company) {
  41. WIKI.config.company = _.trim(args.company)
  42. }
  43. if (args.contentLicense) {
  44. WIKI.config.contentLicense = args.contentLicense
  45. }
  46. if (args.logoUrl) {
  47. WIKI.config.logoUrl = _.trim(args.logoUrl)
  48. }
  49. WIKI.config.seo = {
  50. description: _.get(args, 'description', WIKI.config.seo.description),
  51. robots: _.get(args, 'robots', WIKI.config.seo.robots),
  52. analyticsService: _.get(args, 'analyticsService', WIKI.config.seo.analyticsService),
  53. analyticsId: _.get(args, 'analyticsId', WIKI.config.seo.analyticsId)
  54. }
  55. WIKI.config.features = {
  56. featurePageRatings: _.get(args, 'featurePageRatings', WIKI.config.features.featurePageRatings),
  57. featurePageComments: _.get(args, 'featurePageComments', WIKI.config.features.featurePageComments),
  58. featurePersonalWikis: _.get(args, 'featurePersonalWikis', WIKI.config.features.featurePersonalWikis)
  59. }
  60. WIKI.config.security = {
  61. securityOpenRedirect: _.get(args, 'securityOpenRedirect', WIKI.config.security.securityOpenRedirect),
  62. securityIframe: _.get(args, 'securityIframe', WIKI.config.security.securityIframe),
  63. securityReferrerPolicy: _.get(args, 'securityReferrerPolicy', WIKI.config.security.securityReferrerPolicy),
  64. securityTrustProxy: _.get(args, 'securityTrustProxy', WIKI.config.security.securityTrustProxy),
  65. securitySRI: _.get(args, 'securitySRI', WIKI.config.security.securitySRI),
  66. securityHSTS: _.get(args, 'securityHSTS', WIKI.config.security.securityHSTS),
  67. securityHSTSDuration: _.get(args, 'securityHSTSDuration', WIKI.config.security.securityHSTSDuration),
  68. securityCSP: _.get(args, 'securityCSP', WIKI.config.security.securityCSP),
  69. securityCSPDirectives: _.get(args, 'securityCSPDirectives', WIKI.config.security.securityCSPDirectives)
  70. }
  71. WIKI.config.uploads = {
  72. maxFileSize: _.get(args, 'uploadMaxFileSize', WIKI.config.uploads.maxFileSize),
  73. maxFiles: _.get(args, 'uploadMaxFiles', WIKI.config.uploads.maxFiles)
  74. }
  75. await WIKI.configSvc.saveToDb(['host', 'title', 'company', 'contentLicense', 'seo', 'logoUrl', 'features', 'security', 'uploads'])
  76. if (WIKI.config.security.securityTrustProxy) {
  77. WIKI.app.enable('trust proxy')
  78. } else {
  79. WIKI.app.disable('trust proxy')
  80. }
  81. return {
  82. responseResult: graphHelper.generateSuccess('Site configuration updated successfully')
  83. }
  84. } catch (err) {
  85. return graphHelper.generateError(err)
  86. }
  87. }
  88. }
  89. }