|
|
@ -13,12 +13,11 @@ |
|
|
|
.caption.grey--text.pb-2 Some strategies require additional configuration in their dedicated tab (when selected). |
|
|
|
v-form |
|
|
|
v-checkbox( |
|
|
|
v-for='strategy in strategies', |
|
|
|
v-model='selectedStrategies', |
|
|
|
:key='strategy.key', |
|
|
|
:label='strategy.title', |
|
|
|
:value='strategy.key', |
|
|
|
color='primary', |
|
|
|
v-for='strategy in strategies' |
|
|
|
v-model='strategy.isEnabled' |
|
|
|
:key='strategy.key' |
|
|
|
:label='strategy.title' |
|
|
|
color='primary' |
|
|
|
:disabled='strategy.key === `local`' |
|
|
|
hide-details |
|
|
|
) |
|
|
@ -38,29 +37,43 @@ |
|
|
|
) |
|
|
|
v-divider |
|
|
|
v-subheader.pl-0 Registration |
|
|
|
v-switch.ml-3( |
|
|
|
v-model='allowSelfRegistration', |
|
|
|
label='Allow self-registration', |
|
|
|
:value='true', |
|
|
|
color='primary', |
|
|
|
hint='Allow any user successfully authorized by the strategy to access the wiki.', |
|
|
|
persistent-hint |
|
|
|
) |
|
|
|
v-text-field.ml-3( |
|
|
|
label='Limit to specific email domains' |
|
|
|
prepend-icon='mail_outline' |
|
|
|
hint='Domain(s) seperated by comma. (e.g. domain1.com, domain2.com)' |
|
|
|
persistent-hint |
|
|
|
) |
|
|
|
v-text-field.ml-3( |
|
|
|
label='Assign to group' |
|
|
|
prepend-icon='people' |
|
|
|
hint='Automatically assign new users to these groups.' |
|
|
|
persistent-hint |
|
|
|
.pr-3 |
|
|
|
v-switch.ml-3( |
|
|
|
v-model='strategy.selfRegistration' |
|
|
|
label='Allow self-registration' |
|
|
|
color='primary' |
|
|
|
hint='Allow any user successfully authorized by the strategy to access the wiki.' |
|
|
|
persistent-hint |
|
|
|
) |
|
|
|
v-select.ml-3( |
|
|
|
label='Limit to specific email domains' |
|
|
|
v-model='strategy.domainWhitelist' |
|
|
|
prepend-icon='mail_outline' |
|
|
|
persistent-hint |
|
|
|
deletable-chips |
|
|
|
clearable |
|
|
|
multiple |
|
|
|
chips |
|
|
|
tags |
|
|
|
) |
|
|
|
v-select.ml-3( |
|
|
|
:items='groups' |
|
|
|
item-text='name' |
|
|
|
item-value='id' |
|
|
|
label='Assign to group' |
|
|
|
v-model='strategy.autoEnrollGroups' |
|
|
|
prepend-icon='people' |
|
|
|
hint='Automatically assign new users to these groups.' |
|
|
|
persistent-hint |
|
|
|
deletable-chips |
|
|
|
autocomplete |
|
|
|
clearable |
|
|
|
multiple |
|
|
|
chips |
|
|
|
) |
|
|
|
|
|
|
|
v-card-chin |
|
|
|
v-btn(color='primary') |
|
|
|
v-btn(color='primary', @click='save') |
|
|
|
v-icon(left) chevron_right |
|
|
|
span Save |
|
|
|
v-spacer |
|
|
@ -72,22 +85,20 @@ |
|
|
|
<script> |
|
|
|
import _ from 'lodash' |
|
|
|
|
|
|
|
import groupsQuery from 'gql/admin/auth/auth-query-groups.gql' |
|
|
|
import strategiesQuery from 'gql/admin/auth/auth-query-strategies.gql' |
|
|
|
import strategiesSaveMutation from 'gql/admin/auth/auth-mutation-save-strategies.gql' |
|
|
|
|
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
strategies: [], |
|
|
|
selectedStrategies: ['local'], |
|
|
|
selfRegistration: false, |
|
|
|
domainWhitelist: [], |
|
|
|
autoEnrollGroups: [] |
|
|
|
groups: [], |
|
|
|
strategies: [] |
|
|
|
} |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
activeStrategies() { |
|
|
|
return _.filter(this.strategies, prv => _.includes(this.selectedStrategies, prv.key)) |
|
|
|
return _.filter(this.strategies, 'isEnabled') |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
@ -99,14 +110,26 @@ export default { |
|
|
|
icon: 'cached' |
|
|
|
}) |
|
|
|
}, |
|
|
|
async saveProviders() { |
|
|
|
async save() { |
|
|
|
this.$store.commit(`loadingStart`, 'admin-auth-savestrategies') |
|
|
|
await this.$apollo.mutate({ |
|
|
|
mutation: strategiesSaveMutation, |
|
|
|
variables: { |
|
|
|
strategies: this.auths |
|
|
|
strategies: this.strategies.map(str => _.pick(str, [ |
|
|
|
'isEnabled', |
|
|
|
'key', |
|
|
|
'config', |
|
|
|
'selfRegistration', |
|
|
|
'domainWhitelist', |
|
|
|
'autoEnrollGroups' |
|
|
|
])) |
|
|
|
} |
|
|
|
}) |
|
|
|
this.$store.commit('showNotification', { |
|
|
|
message: 'Strategies saved successfully.', |
|
|
|
style: 'success', |
|
|
|
icon: 'check' |
|
|
|
}) |
|
|
|
this.$store.commit(`loadingStop`, 'admin-auth-savestrategies') |
|
|
|
} |
|
|
|
}, |
|
|
@ -114,10 +137,18 @@ export default { |
|
|
|
strategies: { |
|
|
|
query: strategiesQuery, |
|
|
|
fetchPolicy: 'network-only', |
|
|
|
update: (data) => data.authentication.strategies, |
|
|
|
update: (data) => _.cloneDeep(data.authentication.strategies), |
|
|
|
watchLoading (isLoading) { |
|
|
|
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-auth-refresh') |
|
|
|
} |
|
|
|
}, |
|
|
|
groups: { |
|
|
|
query: groupsQuery, |
|
|
|
fetchPolicy: 'network-only', |
|
|
|
update: (data) => data.groups.list, |
|
|
|
watchLoading (isLoading) { |
|
|
|
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-auth-groups-refresh') |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|