summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorJannik Schönartz2019-03-10 17:42:59 +0100
committerJannik Schönartz2019-03-10 17:42:59 +0100
commit111555c32100b589caef08fb5a6a441a45f15dbf (patch)
tree8ac43b99b91a7408a929bf751b237d37e25b3d6e /webapp
parent[documentation] Add documentation site (diff)
downloadbas-111555c32100b589caef08fb5a6a441a45f15dbf.tar.gz
bas-111555c32100b589caef08fb5a6a441a45f15dbf.tar.xz
bas-111555c32100b589caef08fb5a6a441a45f15dbf.zip
[external-backends] Passwords are not send to the frontend anymore
Change error responses to the new response scheme Add set password button in the frontend to deal with the no password policy
Diffstat (limited to 'webapp')
-rw-r--r--webapp/src/components/BackendModuleEdit.vue33
-rw-r--r--webapp/src/components/BackendModuleEditDynamicFields.vue56
2 files changed, 55 insertions, 34 deletions
diff --git a/webapp/src/components/BackendModuleEdit.vue b/webapp/src/components/BackendModuleEdit.vue
index 9d27fbc..95f4d37 100644
--- a/webapp/src/components/BackendModuleEdit.vue
+++ b/webapp/src/components/BackendModuleEdit.vue
@@ -3,7 +3,7 @@
"en": {
"inputCredentials": "Login credentials",
"backendCreated": "Backend was successfully created.",
- "backendName": "Backend name",
+ "backendName": "Backend Name",
"backendEmptyError": "This field can not be empty.",
"backendType": "Backend type",
"backendtypeEmptyError": "Please choose a backend type.",
@@ -178,21 +178,19 @@ export default {
})
}
},
- loadBackend (backendId) {
- this.$http('/api/backends/' + this.backendId).then(response => {
- this.backendName = response.data.name
- this.loadData = true
- this.backendType = response.data.type
- const credentialValues = JSON.parse(response.data.credentials)
- this.$http('/api/backendtypes/' + this.backendType).then(res => {
- var credentials = res.data
+ async loadBackend (backendId) {
+ const response = await this.$http('/api/backends/' + this.backendId)
+ this.backendName = response.data.name
+ this.loadData = true
+ this.backendType = response.data.type
+ const credentialValues = response.data.credentials
+ const res = await this.$http('/api/backendtypes/' + this.backendType)
+ var credentials = res.data
- // Make an array merge to combine the credentials with the values.
- // var mergedCredentials = credentials.map(x => Object.assign(x, credentialValues.find(y => y.id === x.id)))
- var mergedCredentials = mergeObjects(credentials, credentialValues)
- this.elements = mergedCredentials
- })
- })
+ // Make an array merge to combine the credentials with the values.
+ // var mergedCredentials = credentials.map(x => Object.assign(x, credentialValues.find(y => y.id === x.id)))
+ var mergedCredentials = mergeObjects(credentials, credentialValues)
+ this.elements = mergedCredentials
},
completeStepOne () {
// Error handling
@@ -236,7 +234,7 @@ export default {
this.statusLabel = this.$t('error')
this.$snackbar({ color: 'error', text: response.data.error })
}
- // Set item.loading = false to end the loading animation.
+ // End the loading animation.
this.loading = false
})
}
@@ -276,7 +274,8 @@ export default {
function filterData (obj) {
var result = []
- obj.forEach(function (element) {
+ obj.forEach(element => {
+ if (element.disabled) return
const e = { id: element.id, value: element.value }
if (element.elements) {
e.elements = filterData(element.elements)
diff --git a/webapp/src/components/BackendModuleEditDynamicFields.vue b/webapp/src/components/BackendModuleEditDynamicFields.vue
index 0d612f7..1f9fdcd 100644
--- a/webapp/src/components/BackendModuleEditDynamicFields.vue
+++ b/webapp/src/components/BackendModuleEditDynamicFields.vue
@@ -1,8 +1,10 @@
<i18n>
{
"en": {
+ "setPassword": "Set"
},
"de": {
+ "setPassword": "Setzen"
}
}
</i18n>
@@ -10,27 +12,35 @@
<div>
<template v-for="element in elements">
<v-text-field
- v-if="element.type == 'text'"
+ v-if="element.type === 'text'"
:label="element.name"
- :key="element.name"
+ :key="element.id"
v-model="element.value"
:prepend-icon="element.icon"
></v-text-field>
- <v-text-field
- v-else-if="element.type == 'password'"
- :label="element.name"
- :key="element.name"
- :append-icon="element.show ? 'visibility_off' : 'visibility'"
- :type="element.show ? 'text' : 'password'"
- @click:append="element.show = !element.show"
- v-model="element.value"
- :prepend-icon="element.icon"
- ></v-text-field>
- <div v-else-if="element.type == 'switch'" :key="element.name">
- <v-switch
+
+ <div v-else-if="element.type === 'password'" :key="element.id">
+ <v-layout>
+ <v-text-field
+ :disabled="element.disabled === undefined ? init(element) : element.disabled"
+ :ref="element.id"
+ :label="element.name"
+ :key="element.id"
+ :append-icon="element.show ? 'visibility_off' : 'visibility'"
+ :type="element.show ? 'text' : 'password'"
+ @click:append="element.show = !element.show"
+ v-model="element.value"
+ :prepend-icon="element.icon"
+ ></v-text-field>
+ <v-btn @click="setPassword(element)" flat icon><v-icon color="primary">edit</v-icon></v-btn>
+ </v-layout>
+ </div>
+
+ <div v-else-if="element.type === 'switch'" :key="element.id">
+ <v-switch
v-model="element.value"
:label="element.name"
- :key="element.name"
+ :key="element.id"
color="primary"
:prepend-icon="element.icon"
></v-switch>
@@ -38,10 +48,10 @@
</div>
<v-select
menu-props="offsetY"
- v-else-if="element.type == 'select'"
+ v-else-if="element.type === 'select'"
:items="element.items"
:label="element.name"
- :key="element.name"
+ :key="element.id"
v-model="element.value"
:prepend-icon="element.icon"
></v-select>
@@ -59,6 +69,18 @@ export default {
}
},
methods: {
+ init (element) {
+ element.disabled = true
+ element.value = '********'
+ return element.disabled
+ },
+ setPassword (element) {
+ element.disabled = !element.disabled
+ if (element.disabled) element.value = '********'
+ else element.value = ''
+ }
+ },
+ watch: {
},
computed: {
},