site.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. }
  23. }
  24. },
  25. SiteMutation: {
  26. async updateConfig(obj, args, context) {
  27. let siteHost = _.trim(args.host)
  28. if (siteHost.endsWith('/')) {
  29. siteHost = siteHost.splice(0, -1)
  30. }
  31. try {
  32. WIKI.config.host = siteHost
  33. WIKI.config.title = _.trim(args.title)
  34. WIKI.config.company = _.trim(args.company)
  35. WIKI.config.contentLicense = args.contentLicense
  36. WIKI.config.seo = {
  37. description: args.description,
  38. robots: args.robots,
  39. analyticsService: args.analyticsService,
  40. analyticsId: args.analyticsId
  41. }
  42. WIKI.config.logoUrl = _.trim(args.logoUrl)
  43. WIKI.config.features = {
  44. featurePageRatings: args.featurePageRatings,
  45. featurePageComments: args.featurePageComments,
  46. featurePersonalWikis: args.featurePersonalWikis
  47. }
  48. WIKI.config.security = {
  49. securityIframe: args.securityIframe,
  50. securityReferrerPolicy: args.securityReferrerPolicy,
  51. securityTrustProxy: args.securityTrustProxy,
  52. securitySRI: args.securitySRI,
  53. securityHSTS: args.securityHSTS,
  54. securityHSTSDuration: args.securityHSTSDuration,
  55. securityCSP: args.securityCSP,
  56. securityCSPDirectives: args.securityCSPDirectives
  57. }
  58. await WIKI.configSvc.saveToDb(['host', 'title', 'company', 'contentLicense', 'seo', 'logoUrl', 'features', 'security'])
  59. if (WIKI.config.security.securityTrustProxy) {
  60. WIKI.app.enable('trust proxy')
  61. } else {
  62. WIKI.app.disable('trust proxy')
  63. }
  64. return {
  65. responseResult: graphHelper.generateSuccess('Site configuration updated successfully')
  66. }
  67. } catch (err) {
  68. return graphHelper.generateError(err)
  69. }
  70. }
  71. }
  72. }