site.js 2.12 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const graphHelper = require('../../helpers/graph')

/* global WIKI */

module.exports = {
  Query: {
    async site() { return {} }
  },
  Mutation: {
    async site() { return {} }
  },
  SiteQuery: {
    async config(obj, args, context, info) {
      return {
        host: WIKI.config.host,
        title: WIKI.config.title,
        company: WIKI.config.company,
        ...WIKI.config.seo,
        ...WIKI.config.logo,
20 21
        ...WIKI.config.features,
        ...WIKI.config.security
22 23 24 25 26 27 28 29 30 31 32 33
      }
    }
  },
  SiteMutation: {
    async updateConfig(obj, args, context) {
      try {
        WIKI.config.host = args.host
        WIKI.config.title = args.title
        WIKI.config.company = args.company
        WIKI.config.seo = {
          description: args.description,
          robots: args.robots,
34 35
          analyticsService: args.analyticsService,
          analyticsId: args.analyticsId
36 37 38 39 40 41 42 43 44 45
        }
        WIKI.config.logo = {
          hasLogo: args.hasLogo,
          logoIsSquare: args.logoIsSquare
        }
        WIKI.config.features = {
          featurePageRatings: args.featurePageRatings,
          featurePageComments: args.featurePageComments,
          featurePersonalWikis: args.featurePersonalWikis
        }
46 47 48
        WIKI.config.security = {
          securityIframe: args.securityIframe,
          securityReferrerPolicy: args.securityReferrerPolicy,
49
          securityTrustProxy: args.securityTrustProxy,
NGPixel's avatar
NGPixel committed
50
          securitySRI: args.securitySRI,
51 52 53 54 55 56
          securityHSTS: args.securityHSTS,
          securityHSTSDuration: args.securityHSTSDuration,
          securityCSP: args.securityCSP,
          securityCSPDirectives: args.securityCSPDirectives
        }
        await WIKI.configSvc.saveToDb(['host', 'title', 'company', 'seo', 'logo', 'features', 'security'])
57

58 59 60 61 62 63
        if (WIKI.config.security.securityTrustProxy) {
          WIKI.app.enable('trust proxy')
        } else {
          WIKI.app.disable('trust proxy')
        }

64 65 66 67 68 69 70 71 72
        return {
          responseResult: graphHelper.generateSuccess('Site configuration updated successfully')
        }
      } catch (err) {
        return graphHelper.generateError(err)
      }
    }
  }
}