123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- <template lang='pug'>
- v-container(fluid, grid-list-lg)
- v-layout(row wrap)
- v-flex(xs12)
- .admin-header
- img.animated.fadeInUp(src='/svg/icon-validation.svg', alt='SSL', style='width: 80px;')
- .admin-header-title
- .headline.primary--text.animated.fadeInLeft {{ $t('admin:ssl.title') }}
- .subtitle-1.grey--text.animated.fadeInLeft {{ $t('admin:ssl.subtitle') }}
- v-spacer
- v-btn.animated.fadeInDown(color='success', depressed, @click='save', large)
- v-icon(left) mdi-check
- span {{$t('common:actions.apply')}}
- v-form.pt-3
- v-layout(row wrap)
- v-flex(lg6 xs12)
- v-form
- v-card.animated.fadeInUp
- v-toolbar(color='primary', dark, dense, flat)
- v-toolbar-title.subtitle-1 {{ $t('admin:ssl.provider') }}
- v-card-text
- v-select(
- :items='providers'
- outlined
- :label='$t(`admin:ssl.provider`)'
- required
- :counter='255'
- v-model='config.provider'
- prepend-icon='mdi-handshake'
- :hint='$t(`admin:ssl.providerHint`)'
- persistent-hint
- )
- v-text-field.mt-3(
- outlined
- :label='$t(`admin:ssl.domain`)'
- required
- :counter='255'
- v-model='config.domain'
- prepend-icon='mdi-earth'
- :hint='$t(`admin:ssl.domainHint`)'
- persistent-hint
- :disabled='config.provider === ``'
- )
- v-card.animated.fadeInUp.wait-p2s.mt-3(v-if='config.provider !== ``')
- v-toolbar(color='primary', dark, dense, flat)
- v-toolbar-title.subtitle-1 {{$t('admin:ssl.providerOptions')}}
- v-card-text ---
- v-flex(lg6 xs12)
- v-card.animated.fadeInUp.wait-p2s
- v-toolbar(color='primary', dark, dense, flat)
- v-toolbar-title.subtitle-1 {{ $t('admin:ssl.ports') }}
- v-card-text
- v-row
- v-col(cols='6')
- v-text-field(
- outlined
- :label='$t(`admin:ssl.httpPort`)'
- v-model='config.httpPort'
- prepend-icon='mdi-lock-open-variant-outline'
- :hint='$t(`admin:ssl.httpPortHint`)'
- persistent-hint
- )
- v-col(cols='6')
- v-checkbox(
- :label='$t(`admin:ssl.httpPortRedirect`)'
- v-model='config.httpRedirect'
- :hint='$t(`admin:ssl.httpPortRedirectHint`)'
- :disabled='config.provider === ``'
- persistent-hint
- color='primary'
- )
- v-col(cols='6')
- v-text-field(
- outlined
- :label='$t(`admin:ssl.httpsPort`)'
- v-model='config.httpsPort'
- prepend-icon='mdi-lock'
- :hint='$t(`admin:ssl.httpsPortHint`)'
- persistent-hint
- :disabled='config.provider === ``'
- )
- v-card-text.grey(:class='$vuetify.theme.dark ? `darken-4-l5` : `lighten-4`')
- .caption {{$t(`admin:ssl.writableConfigFileWarning`)}}
- </template>
- <script>
- import _ from 'lodash'
- import siteConfigQuery from 'gql/admin/site/site-query-config.gql'
- import siteUpdateConfigMutation from 'gql/admin/site/site-mutation-save-config.gql'
- export default {
- data() {
- return {
- config: {
- provider: '',
- domain: '',
- httpPort: 3000,
- httpPortRedirect: true,
- httpsPort: 443
- }
- }
- },
- computed: {
- providers () {
- return [
- { text: this.$t('admin:ssl.providerDisabled'), value: '' },
- { text: this.$t('admin:ssl.providerLetsEncrypt'), value: 'letsencrypt' },
- { text: this.$t('admin:ssl.providerCustomCertificate'), value: 'custom' }
- ]
- }
- },
- methods: {
- async save () {
- try {
- await this.$apollo.mutate({
- mutation: siteUpdateConfigMutation,
- variables: {
- host: _.get(this.config, 'host', ''),
- title: _.get(this.config, 'title', ''),
- description: _.get(this.config, 'description', ''),
- robots: _.get(this.config, 'robots', []),
- analyticsService: _.get(this.config, 'analyticsService', ''),
- analyticsId: _.get(this.config, 'analyticsId', ''),
- company: _.get(this.config, 'company', ''),
- hasLogo: _.get(this.config, 'hasLogo', false),
- logoIsSquare: _.get(this.config, 'logoIsSquare', false),
- featurePageRatings: _.get(this.config, 'featurePageRatings', false),
- featurePageComments: _.get(this.config, 'featurePageComments', false),
- featurePersonalWikis: _.get(this.config, 'featurePersonalWikis', false),
- securityIframe: _.get(this.config, 'securityIframe', false),
- securityReferrerPolicy: _.get(this.config, 'securityReferrerPolicy', false),
- securityTrustProxy: _.get(this.config, 'securityTrustProxy', false),
- securitySRI: _.get(this.config, 'securitySRI', false),
- securityHSTS: _.get(this.config, 'securityHSTS', false),
- securityHSTSDuration: _.get(this.config, 'securityHSTSDuration', 0),
- securityCSP: _.get(this.config, 'securityCSP', false),
- securityCSPDirectives: _.get(this.config, 'securityCSPDirectives', '')
- },
- watchLoading (isLoading) {
- this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-site-update')
- }
- })
- this.$store.commit('showNotification', {
- style: 'success',
- message: 'Configuration saved successfully.',
- icon: 'check'
- })
- this.siteTitle = this.config.title
- this.company = this.config.company
- } catch (err) {
- this.$store.commit('pushGraphError', err)
- }
- }
- }
- // apollo: {
- // config: {
- // query: siteConfigQuery,
- // fetchPolicy: 'network-only',
- // update: (data) => _.cloneDeep(data.site.config),
- // watchLoading (isLoading) {
- // this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-site-refresh')
- // }
- // }
- // }
- }
- </script>
- <style lang='scss'>
- </style>
|