From 604941fe6af6cd74079b65c29bb25773693e74cf Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 30 Jun 2019 15:18:26 -0400 Subject: [PATCH] feat: utilities section (wip) + auth utilities --- client/components/admin.vue | 4 +- .../components/admin/admin-utilities-auth.vue | 93 +++++++ .../admin/admin-utilities-cache.vue | 32 +++ .../admin/admin-utilities-importv1.vue | 77 ++++++ .../admin/admin-utilities-telemetry.vue | 80 ++++++ client/components/admin/admin-utilities.vue | 235 +++++------------- .../utilities-mutation-auth-regencerts.gql | 12 + .../utilities-mutation-auth-resetguest.gql | 12 + client/static/svg/icon-software.svg | 13 + dev/index.js | 4 +- server/core/auth.js | 70 ++++++ server/graph/resolvers/authentication.js | 41 +++ server/graph/schemas/authentication.graphql | 3 + server/models/users.js | 2 +- server/modules/storage/git/storage.js | 2 +- 15 files changed, 496 insertions(+), 184 deletions(-) create mode 100644 client/components/admin/admin-utilities-auth.vue create mode 100644 client/components/admin/admin-utilities-cache.vue create mode 100644 client/components/admin/admin-utilities-importv1.vue create mode 100644 client/components/admin/admin-utilities-telemetry.vue create mode 100644 client/graph/admin/utilities/utilities-mutation-auth-regencerts.gql create mode 100644 client/graph/admin/utilities/utilities-mutation-auth-resetguest.gql create mode 100644 client/static/svg/icon-software.svg diff --git a/client/components/admin.vue b/client/components/admin.vue index b198170b..8149722f 100644 --- a/client/components/admin.vue +++ b/client/components/admin.vue @@ -83,8 +83,8 @@ v-list-tile(to='/system', v-if='hasPermission(`manage:system`)') v-list-tile-avatar: v-icon tune v-list-tile-title {{ $t('admin:system.title') }} - v-list-tile(to='/utilities', v-if='hasPermission(`manage:system`)', disabled) - v-list-tile-avatar: v-icon(color='grey lighten-2') build + v-list-tile(to='/utilities', v-if='hasPermission(`manage:system`)') + v-list-tile-avatar: v-icon build v-list-tile-title {{ $t('admin:utilities.title') }} v-list-tile(to='/webhooks', v-if='hasPermission(`manage:system`)', disabled) v-list-tile-avatar: v-icon(color='grey lighten-2') ac_unit diff --git a/client/components/admin/admin-utilities-auth.vue b/client/components/admin/admin-utilities-auth.vue new file mode 100644 index 00000000..e697fb8b --- /dev/null +++ b/client/components/admin/admin-utilities-auth.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/client/components/admin/admin-utilities-cache.vue b/client/components/admin/admin-utilities-cache.vue new file mode 100644 index 00000000..c9424780 --- /dev/null +++ b/client/components/admin/admin-utilities-cache.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/client/components/admin/admin-utilities-importv1.vue b/client/components/admin/admin-utilities-importv1.vue new file mode 100644 index 00000000..b7ac5a61 --- /dev/null +++ b/client/components/admin/admin-utilities-importv1.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/client/components/admin/admin-utilities-telemetry.vue b/client/components/admin/admin-utilities-telemetry.vue new file mode 100644 index 00000000..853f356b --- /dev/null +++ b/client/components/admin/admin-utilities-telemetry.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/client/components/admin/admin-utilities.vue b/client/components/admin/admin-utilities.vue index ae64b14a..a97fc8c2 100644 --- a/client/components/admin/admin-utilities.vue +++ b/client/components/admin/admin-utilities.vue @@ -5,196 +5,75 @@ .admin-header img(src='/svg/icon-maintenance.svg', alt='Utilities', style='width: 80px;') .admin-header-title - .headline.primary--text Utilities - .subheading.grey--text Maintenance and troubleshooting tools + .headline.primary--text {{$t('admin:utilities.title')}} + .subheading.grey--text {{$t('admin:utilities.subtitle')}} - v-card.mt-3 - v-tabs(color='grey darken-2', fixed-tabs, slider-color='white', show-arrows, dark) - v-tab(key='tools') Tools - v-tab(key='cache') Cache - v-tab(key='telemetry') Telemetry - v-tab(key='support') Support + v-flex(lg3, xs12) + v-card.animated.fadeInUp + v-toolbar(flat, color='primary', dark, dense) + .subheading {{$t('admin:utilities.tools')}} + v-list(two-line, dense).py-0 + template(v-for='(tool, idx) in tools') + v-list-tile(:key='tool.key', @click='selectedTool = tool.key', :disabled='!tool.isAvailable') + v-list-tile-avatar + v-icon(:color='!tool.isAvailable ? `grey lighten-1` : (selectedTool === tool.key ? `blue ` : `grey darken-1`)') {{ tool.icon }} + v-list-tile-content + v-list-tile-title.body-2(:class='!tool.isAvailable ? `grey--text` : (selectedTool === tool.key ? `primary--text` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Title') }} + v-list-tile-sub-title.caption(:class='!tool.isAvailable ? `grey--text text--lighten-1` : (selectedTool === tool.key ? `blue--text ` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Subtitle') }} + v-list-tile-avatar(v-if='selectedTool === tool.key') + v-icon.animated.fadeInLeft(color='primary') arrow_forward_ios + v-divider(v-if='idx < tools.length - 1') - v-tab-item(key='tools', :transition='false', :reverse-transition='false') - v-container.pa-2(fluid, grid-list-sm, :class='$vuetify.dark ? "" : "grey lighten-5"') - v-layout(row, wrap) - v-flex(xs12, sm6) - v-card - v-toolbar(:color='$vuetify.dark ? "" : "grey darken-3"', dark, dense, flat) - v-toolbar-title - .subheading Authentication - v-spacer - v-chip(label, color='white', small).grey--text.text--darken-2 coming soon - v-subheader Flush User Sessions - v-card-text.pt-0.pl-4 - .body-1 This will cause all users to be logged out. You will need to log back in after the operation. - v-btn(depressed).ml-0 - v-icon(left, color='grey') build - span Proceed - v-divider.my-0 - v-subheader Reset Guest User - v-card-text.pt-0.pl-4 - .body-1 This will reset the guest user to its default parameters and permissions. - v-btn(depressed).ml-0 - v-icon(left, color='grey') build - span Proceed - v-card.mt-3 - v-toolbar(:color='$vuetify.dark ? "" : "grey darken-3"', dark, dense, flat) - v-toolbar-title - .subheading Modules - v-spacer - v-chip(label, color='white', small).grey--text.text--darken-2 coming soon - v-subheader Rescan Modules - v-card-text.pt-0.pl-4 - .body-1 Look for new modules on disk. Existing configurations will be merged. - v-select.mt-3( - v-model='rescanModuleType' - :items='moduleTypes' - label='Modules Type' - outline - background-color='grey lighten-1' - hide-details - dense - ) - v-btn.ml-0(color='primary', depressed, dark) - v-icon(left) chevron_right - span Rescan - v-flex(xs12, sm6) - v-card - v-toolbar(:color='$vuetify.dark ? "" : "grey darken-3"', dark, dense, flat) - v-toolbar-title - .subheading Maintenance Mode - v-spacer - v-chip(label, color='white', small).grey--text.text--darken-2 coming soon - v-card-text - .body-1 Maintenance mode restrict access to the site to administrators only, regarless of current permissions. - v-btn.mt-3.ml-0(color='orange darken-2', depressed, dark) - icon-home-alert.mr-2(fillColor='#FFFFFF') - | Turn On Maintenance Mode - v-card.mt-3 - v-toolbar(:color='$vuetify.dark ? "" : "grey darken-3"', dark, dense, flat) - v-toolbar-title - .subheading Graph Endpoint - v-spacer - v-chip(label, color='white', small).grey--text.text--darken-2 coming soon - v-card-text - .body-1 The Graph API Endpoint from which remote resources like locales, themes and plugins are fetched. - .caption.red--text Do not change unless you know what you're doing! - v-text-field.my-2(outline, hide-details, background-color='grey lighten-1', label='Graph Endpoint', value='https://graph.requarks.io') - v-btn.ml-0(color='primary', depressed, dark) - v-icon(left) chevron_right - span Save - - v-tab-item(key='cache', :transition='false', :reverse-transition='false') - v-card - v-card-text Coming soon - - v-tab-item(key='telemetry', :transition='false', :reverse-transition='false') - v-card - v-form - v-card-text - v-subheader What is telemetry? - .body-1.pl-3 Telemetry allows the developers of Wiki.js to improve the software by collecting basic anonymized data about its usage and the host info. #[br] This is entirely optional and #[strong absolutely no] private data (such as content or personal data) is collected. - .body-1.pt-3.pl-3 For maximum privacy, a random client ID is generated during setup. This ID is used to group requests together while keeping complete anonymity. You can reset and generate a new one below at any time. - v-divider.my-3 - v-subheader What is collected? - .body-1.pl-3 When telemetry is enabled, only the following data is transmitted: - v-list(dense) - v-list-tile - v-list-tile-avatar: v-icon info_outline - v-list-tile-content: v-list-tile-title.caption Version of Wiki.js installed - v-list-tile - v-list-tile-avatar: v-icon info_outline - v-list-tile-content: v-list-tile-title.caption Basic OS information (platform, CPU cores count, DB type) - v-list-tile - v-list-tile-avatar: v-icon info_outline - v-list-tile-content: v-list-tile-title.caption Crash debug data - v-list-tile - v-list-tile-avatar: v-icon info_outline - v-list-tile-content: v-list-tile-title.caption Setup analytics (installation checkpoint reached) - .body-2.pl-3 - v-divider.my-3 - v-subheader Settings - .pl-3 - v-switch.mt-0( - v-model='telemetry', - label='Enable Telemetry', - :value='true', - color='primary', - hint='Allow Wiki.js to transmit telemetry data.', - persistent-hint - ) - .subheading.mt-3.grey--text.text--darken-1 Client ID - .body-1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - v-card-chin - v-btn(color='primary', @click='updateTelemetry') - v-icon(left) chevron_right - | Save Changes - v-spacer - v-btn(outline, color='grey', @click='resetClientId') - v-icon(left) autorenew - span Reset Client ID - - v-tab-item(key='support', :transition='false', :reverse-transition='false') - v-card.pa-3 - v-subheader Report a bug - .body-1.pl-3 Bugs can be reported using GitHub issues on the project repository page. - v-btn.ml-3.mt-3(depressed, dark, color='grey darken-2', href='https://github.com/Requarks/wiki/issues', target='_blank') - icon-github-circle.mr-3(fillColor='#FFFFFF') - span Submit an issue - v-divider.my-3 - v-subheader Suggest a New Feature / Enhancement - .body-1.pl-3 Have an idea for a new feature or something that could be improved? - v-btn.ml-3.mt-3(depressed, dark, color='indigo', href='https://requests.requarks.io/wiki', target='_blank') - v-icon(left) lightbulb_outline - span Submit an idea - v-divider.my-3 - v-subheader Questions / Comments - .body-1.pl-3 Join our gitter channel. We are very active and friendly! - v-btn.ml-3.mt-3(depressed, dark, color='pink', href='https://gitter.im/Requarks/wiki', target='_blank') - v-icon(left) chat - span Launch Gitter + v-flex.animated.fadeInUp.wait-p2s(xs12, lg9) + transition(name='admin-router') + component(:is='selectedTool')