From 6ff4152e1c603356c97eb67c05f443ace453fb65 Mon Sep 17 00:00:00 2001 From: NGPixel Date: Mon, 5 Mar 2018 23:13:20 -0500 Subject: [PATCH] feat: admin auth - UI + form fields per provider + refresh --- client/components/admin-api.vue | 6 ++-- client/components/admin-auth.vue | 43 ++++++++++++++++++++++-- client/components/nav-header.vue | 6 ++-- server/graph/resolvers/authentication.js | 4 ++- wiki.js | 4 +-- 5 files changed, 52 insertions(+), 11 deletions(-) diff --git a/client/components/admin-api.vue b/client/components/admin-api.vue index 40c70faf..b8b0a866 100644 --- a/client/components/admin-api.vue +++ b/client/components/admin-api.vue @@ -68,9 +68,9 @@ export default { selected: [], pagination: {}, items: [ - { id: 1, key: 'user@test.com' }, - { id: 2, key: 'dude@test.com' }, - { id: 3, key: 'dude@test.com' } + { id: 1, key: 'xxxxxxxxxxxxx' }, + { id: 2, key: 'xxxxxxxxxxxxy' }, + { id: 3, key: 'xxxxxxxxxxxxz' } ], headers: [ { text: 'Name', value: 'name' }, diff --git a/client/components/admin-auth.vue b/client/components/admin-auth.vue index 88a483a8..bc94d6dd 100644 --- a/client/components/admin-auth.vue +++ b/client/components/admin-auth.vue @@ -8,10 +8,20 @@ v-tab(key='settings'): v-icon settings v-tab(v-for='provider in providers', :key='provider.key') {{ provider.title }} - v-tab-item(key='settings') + v-tab-item(key='settings', :transition='false', :reverse-transition='false') v-card.pa-3 + .body-2.pb-2 Select which authentication providers are enabled: v-form - v-checkbox(v-for='(provider, n) in providers', v-model='auths', :key='provider.key', :label='provider.title', :value='provider.key', color='primary') + v-checkbox( + v-for='(provider, n) in providers', + v-model='auths', + :key='provider.key', + :label='provider.title', + :value='provider.key', + color='primary', + :disabled='provider.key === `local`' + hide-details + ) v-divider v-btn(color='primary') v-icon(left) chevron_right @@ -19,6 +29,26 @@ v-btn(color='black', dark) v-icon(left) layers_clear | Flush Sessions + v-btn(icon, @click='refresh') + v-icon.grey--text refresh + + v-tab-item(v-for='(provider, n) in providers', :key='provider.key', :transition='false', :reverse-transition='false') + v-card.pa-3 + .body-1(v-if='!provider.props || provider.props.length < 1') This provider has no configuration options you can modify. + v-form(v-else) + v-text-field(v-for='prop in provider.props', :key='prop', :label='prop', prepend-icon='mode_edit') + v-divider + v-btn(color='primary') + v-icon(left) chevron_right + | Save Configuration + + v-snackbar( + color='success' + top + v-model='refreshCompleted' + ) + v-icon.mr-3(dark) cached + | List of providers has been refreshed. diff --git a/client/components/nav-header.vue b/client/components/nav-header.vue index 2c865346..bbba60c8 100644 --- a/client/components/nav-header.vue +++ b/client/components/nav-header.vue @@ -4,7 +4,7 @@ v-toolbar-title span.subheading Wiki.js v-spacer - v-progress-circular.mr-3(indeterminate, color='blue', v-if='$apollo.loading') + v-progress-circular.mr-3(indeterminate, color='blue', v-show='$apollo.loading') v-btn(icon) v-icon(color='grey') search v-btn(icon, @click.native='darkTheme = !darkTheme') @@ -27,7 +27,9 @@ diff --git a/server/graph/resolvers/authentication.js b/server/graph/resolvers/authentication.js index 289a7c5d..a1c91840 100644 --- a/server/graph/resolvers/authentication.js +++ b/server/graph/resolvers/authentication.js @@ -17,8 +17,10 @@ module.exports = { return { isEnabled: true, key: str.key, + props: str.props, title: str.title, - useForm: str.useForm + useForm: str.useForm, + config: [] } }).sortBy(['title']).value() } diff --git a/wiki.js b/wiki.js index cb38dd9e..e902bf22 100644 --- a/wiki.js +++ b/wiki.js @@ -90,8 +90,8 @@ const init = { console.warn('--- >>>>>>>>>>>>>>>>>>>>>>>>>>>> ---') console.warn('--- Changes detected: Restarting ---') console.warn('--- <<<<<<<<<<<<<<<<<<<<<<<<<<<< ---') - global.wiki.server.destroy(() => { - global.wiki = {} + global.WIKI.server.destroy(() => { + global.WIKI = {} for (const workerId in cluster.workers) { cluster.workers[workerId].kill() }