123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- const graphHelper = require('../../helpers/graph')
- const _ = require('lodash')
- /* 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,
- contentLicense: WIKI.config.contentLicense,
- logoUrl: WIKI.config.logoUrl,
- ...WIKI.config.seo,
- ...WIKI.config.features,
- ...WIKI.config.security,
- authAutoLogin: WIKI.config.auth.autoLogin,
- authEnforce2FA: WIKI.config.auth.enforce2FA,
- authHideLocal: WIKI.config.auth.hideLocal,
- authLoginBgUrl: WIKI.config.auth.loginBgUrl,
- authJwtAudience: WIKI.config.auth.audience,
- authJwtExpiration: WIKI.config.auth.tokenExpiration,
- authJwtRenewablePeriod: WIKI.config.auth.tokenRenewal,
- uploadMaxFileSize: WIKI.config.uploads.maxFileSize,
- uploadMaxFiles: WIKI.config.uploads.maxFiles,
- uploadScanSVG: WIKI.config.uploads.scanSVG
- }
- }
- },
- SiteMutation: {
- async updateConfig(obj, args, context) {
- try {
- if (args.host) {
- let siteHost = _.trim(args.host)
- if (siteHost.endsWith('/')) {
- siteHost = siteHost.slice(0, -1)
- }
- WIKI.config.host = siteHost
- }
- if (args.title) {
- WIKI.config.title = _.trim(args.title)
- }
- if (args.company) {
- WIKI.config.company = _.trim(args.company)
- }
- if (args.contentLicense) {
- WIKI.config.contentLicense = args.contentLicense
- }
- if (args.logoUrl) {
- WIKI.config.logoUrl = _.trim(args.logoUrl)
- }
- WIKI.config.seo = {
- description: _.get(args, 'description', WIKI.config.seo.description),
- robots: _.get(args, 'robots', WIKI.config.seo.robots),
- analyticsService: _.get(args, 'analyticsService', WIKI.config.seo.analyticsService),
- analyticsId: _.get(args, 'analyticsId', WIKI.config.seo.analyticsId)
- }
- WIKI.config.auth = {
- autoLogin: _.get(args, 'authAutoLogin', WIKI.config.auth.autoLogin),
- enforce2FA: _.get(args, 'authEnforce2FA', WIKI.config.auth.enforce2FA),
- hideLocal: _.get(args, 'authHideLocal', WIKI.config.auth.hideLocal),
- loginBgUrl: _.get(args, 'authLoginBgUrl', WIKI.config.auth.loginBgUrl),
- audience: _.get(args, 'authJwtAudience', WIKI.config.auth.audience),
- tokenExpiration: _.get(args, 'authJwtExpiration', WIKI.config.auth.tokenExpiration),
- tokenRenewal: _.get(args, 'authJwtRenewablePeriod', WIKI.config.auth.tokenRenewal)
- }
- WIKI.config.features = {
- featurePageRatings: _.get(args, 'featurePageRatings', WIKI.config.features.featurePageRatings),
- featurePageComments: _.get(args, 'featurePageComments', WIKI.config.features.featurePageComments),
- featurePersonalWikis: _.get(args, 'featurePersonalWikis', WIKI.config.features.featurePersonalWikis)
- }
- WIKI.config.security = {
- securityOpenRedirect: _.get(args, 'securityOpenRedirect', WIKI.config.security.securityOpenRedirect),
- securityIframe: _.get(args, 'securityIframe', WIKI.config.security.securityIframe),
- securityReferrerPolicy: _.get(args, 'securityReferrerPolicy', WIKI.config.security.securityReferrerPolicy),
- securityTrustProxy: _.get(args, 'securityTrustProxy', WIKI.config.security.securityTrustProxy),
- securitySRI: _.get(args, 'securitySRI', WIKI.config.security.securitySRI),
- securityHSTS: _.get(args, 'securityHSTS', WIKI.config.security.securityHSTS),
- securityHSTSDuration: _.get(args, 'securityHSTSDuration', WIKI.config.security.securityHSTSDuration),
- securityCSP: _.get(args, 'securityCSP', WIKI.config.security.securityCSP),
- securityCSPDirectives: _.get(args, 'securityCSPDirectives', WIKI.config.security.securityCSPDirectives)
- }
- WIKI.config.uploads = {
- maxFileSize: _.get(args, 'uploadMaxFileSize', WIKI.config.uploads.maxFileSize),
- maxFiles: _.get(args, 'uploadMaxFiles', WIKI.config.uploads.maxFiles),
- scanSVG: _.get(args, 'uploadScanSVG', WIKI.config.uploads.scanSVG)
- }
- await WIKI.configSvc.saveToDb(['host', 'title', 'company', 'contentLicense', 'seo', 'logoUrl', 'auth', 'features', 'security', 'uploads'])
- if (WIKI.config.security.securityTrustProxy) {
- WIKI.app.enable('trust proxy')
- } else {
- WIKI.app.disable('trust proxy')
- }
- return {
- responseResult: graphHelper.generateSuccess('Site configuration updated successfully')
- }
- } catch (err) {
- return graphHelper.generateError(err)
- }
- }
- }
- }
|