feat: handle disabled auth strategies

This commit is contained in:
NGPixel
2020-09-05 18:33:15 -04:00
parent 715364de1d
commit 8490fc1267
7 changed files with 113 additions and 71 deletions

View File

@@ -77,64 +77,80 @@
.admin-providerlogo
img(:src='strategy.strategy.logo', :alt='strategy.strategy.title')
v-card-text
.overline.mb-5 {{$t('admin:auth.strategyConfiguration')}}
v-text-field.mb-3(
outlined
label='Display Name'
v-model='strategy.displayName'
prepend-icon='mdi-format-title'
hint='The title shown to the end user for this authentication strategy.'
persistent-hint
)
template(v-for='cfg in strategy.config')
v-select.mb-3(
v-if='cfg.value.type === "string" && cfg.value.enum'
outlined
:items='cfg.value.enum'
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
:class='cfg.value.hint ? "mb-2" : ""'
:style='cfg.value.maxWidth > 0 ? `max-width:` + cfg.value.maxWidth + `px;` : ``'
)
v-switch.mb-6(
v-else-if='cfg.value.type === "boolean"'
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
color='primary'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
inset
)
v-textarea.mb-3(
v-else-if='cfg.value.type === "string" && cfg.value.multiline'
outlined
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
:class='cfg.value.hint ? "mb-2" : ""'
)
v-text-field.mb-3(
v-else
outlined
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
:class='cfg.value.hint ? "mb-2" : ""'
:style='cfg.value.maxWidth > 0 ? `max-width:` + cfg.value.maxWidth + `px;` : ``'
)
v-divider.mt-3
.row
.col-8
v-text-field(
outlined
:label='$t(`admin:auth.displayName`)'
v-model='strategy.displayName'
prepend-icon='mdi-format-title'
:hint='$t(`admin:auth.displayNameHint`)'
persistent-hint
)
.col-4
v-switch.mt-1(
:label='$t(`admin:auth.strategyIsEnabled`)'
v-model='strategy.isEnabled'
color='primary'
prepend-icon='mdi-power'
:hint='$t(`admin:auth.strategyIsEnabledHint`)'
persistent-hint
inset
:disabled='strategy.key === `local`'
)
template(v-if='strategy.config && Object.keys(strategy.config).length > 0')
v-divider
.overline.my-5 {{$t('admin:auth.strategyConfiguration')}}
.pr-3
template(v-for='cfg in strategy.config')
v-select.mb-3(
v-if='cfg.value.type === "string" && cfg.value.enum'
outlined
:items='cfg.value.enum'
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
:class='cfg.value.hint ? "mb-2" : ""'
:style='cfg.value.maxWidth > 0 ? `max-width:` + cfg.value.maxWidth + `px;` : ``'
)
v-switch.mb-6(
v-else-if='cfg.value.type === "boolean"'
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
color='primary'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
inset
)
v-textarea.mb-3(
v-else-if='cfg.value.type === "string" && cfg.value.multiline'
outlined
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
:class='cfg.value.hint ? "mb-2" : ""'
)
v-text-field.mb-3(
v-else
outlined
:key='cfg.key'
:label='cfg.value.title'
v-model='cfg.value.value'
prepend-icon='mdi-cog-box'
:hint='cfg.value.hint ? cfg.value.hint : ""'
persistent-hint
:class='cfg.value.hint ? "mb-2" : ""'
:style='cfg.value.maxWidth > 0 ? `max-width:` + cfg.value.maxWidth + `px;` : ``'
)
v-divider
.overline.my-5 {{$t('admin:auth.registration')}}
.pr-3
v-switch.ml-3(
@@ -145,7 +161,7 @@
persistent-hint
inset
)
v-combobox.ml-3.mt-3(
v-combobox.ml-3.mt-5(
:label='$t(`admin:auth.domainsWhitelist`)'
v-model='strategy.domainWhitelist'
prepend-icon='mdi-email-check-outline'
@@ -272,6 +288,7 @@ export default {
}
})),
order: this.activeStrategies.length,
isEnabled: true,
displayName: str.title,
selfRegistration: false,
domainWhitelist: [],
@@ -309,6 +326,7 @@ export default {
strategyKey: str.strategy.key,
displayName: str.displayName,
order: str.order,
isEnabled: str.isEnabled,
config: str.config.map(cfg => ({...cfg, value: JSON.stringify({ v: cfg.value.value })})),
selfRegistration: str.selfRegistration,
domainWhitelist: str.domainWhitelist,
@@ -384,6 +402,7 @@ export default {
value
}
order
isEnabled
displayName
selfRegistration
domainWhitelist

View File

@@ -661,7 +661,7 @@ export default {
query: gql`
{
authentication {
activeStrategies {
activeStrategies(enabledOnly: true) {
key
strategy {
key