summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorJannik Schönartz2019-02-26 10:00:29 +0100
committerJannik Schönartz2019-02-26 10:00:29 +0100
commitf4d4c1ee3725bbae32199fba99106fbd4d39d31b (patch)
treeda8b2db3afc36500afd7be327cb396916f487eb4 /webapp
parent[permissionmanager] Fix security bug: Code was executed weather the user had ... (diff)
downloadbas-f4d4c1ee3725bbae32199fba99106fbd4d39d31b.tar.gz
bas-f4d4c1ee3725bbae32199fba99106fbd4d39d31b.tar.xz
bas-f4d4c1ee3725bbae32199fba99106fbd4d39d31b.zip
[webapp/dashboard] User data now stores in the global storage & [usermanagement] fix 'username already exist' error not workling properly
Diffstat (limited to 'webapp')
-rw-r--r--webapp/src/components/AccountModule.vue17
-rw-r--r--webapp/src/components/DashboardPage.vue18
-rw-r--r--webapp/src/components/UserCreateForm.vue9
-rw-r--r--webapp/src/components/UserModuleEdit.vue19
-rw-r--r--webapp/src/store/global.js24
-rw-r--r--webapp/src/store/users.js1
6 files changed, 48 insertions, 40 deletions
diff --git a/webapp/src/components/AccountModule.vue b/webapp/src/components/AccountModule.vue
index f24da2c..11395cb 100644
--- a/webapp/src/components/AccountModule.vue
+++ b/webapp/src/components/AccountModule.vue
@@ -251,7 +251,7 @@
</template>
<script>
-import { mapGetters, mapMutations } from 'vuex'
+import { mapGetters } from 'vuex'
export default {
name: 'AccountPage',
data () {
@@ -259,7 +259,6 @@ export default {
tab: 0,
dialog: false,
valid: true,
- user: '',
editInfoMode: false,
infoName: '',
infoEmail: '',
@@ -287,10 +286,9 @@ export default {
}
},
computed: {
- ...mapGetters(['tabsDark', 'tabsColor', 'tabsSliderColor'])
+ ...mapGetters(['tabsDark', 'tabsColor', 'tabsSliderColor', 'user'])
},
methods: {
- ...mapMutations(['setUserFullName']),
deleteAccount () {
this.dialog = false
this.$http.delete('/api/users/current').then(response => {
@@ -309,7 +307,7 @@ export default {
// Axios request to submit info (username, name, email)
this.$http.post('/api/users/current', { name: this.infoName, email: this.infoEmail }).then(response => {
this.editInfoMode = false
- this.getUserData()
+ this.$store.dispatch('loadUser')
this.$snackbar({ color: 'success', text: this.$t('userInfoChanged') })
})
},
@@ -345,19 +343,10 @@ export default {
this.passwordNew = ''
this.passwordConfirm = ''
},
- getUserData () {
- this.$http('/api/users/current').then(response => {
- this.user = response.data
- this.setUserFullName(this.user.name)
- })
- },
newAlert () {
this.$alert({ type: 'success', text: 'aaaaaaaaaaaaaaaaaaaaaaaaaas das dsad asdpioipoidijoijoawiojdiojijowaijo d o wiadijo oiawio jdi aaaaaaaaaaaaaaaaaaaaaa uo iashdoiuas dhuas hduioash diuash diuash diuash diuh test ' + this.testId })
this.testId++
}
- },
- created () {
- this.getUserData()
}
}
</script>
diff --git a/webapp/src/components/DashboardPage.vue b/webapp/src/components/DashboardPage.vue
index bfe156f..a8e8ac6 100644
--- a/webapp/src/components/DashboardPage.vue
+++ b/webapp/src/components/DashboardPage.vue
@@ -69,12 +69,12 @@
<notifications-alerts style="margin-right: 20px"></notifications-alerts>
<v-toolbar-items>
<v-menu offset-y attach>
- <v-btn class="user-button" flat slot="activator">
+ <v-btn class="user-button" flat slot="activator" style="text-transform: none;">
<v-icon left>account_circle</v-icon>
<v-flex>
- {{ userFullName }}
+ {{ user.name }}
<v-spacer></v-spacer>
- <v-subheader class="user-subheader">{{ userName }}</v-subheader>
+ <v-subheader class="user-subheader">{{ user.username }}</v-subheader>
</v-flex>
</v-btn>
<v-list>
@@ -131,13 +131,12 @@ export default {
drawerTranslateX: 0,
drawerMini: localStorage.getItem('drawerMini') === 'true',
drawerOpen: localStorage.getItem('drawerOpen') !== 'false',
- clientCount: 0,
- userName: ''
+ clientCount: 0
}
},
computed: {
...mapState(['settings']),
- ...mapGetters(['userFullName']),
+ ...mapGetters(['user']),
mini () { return this.settings.mini },
desktop () { return this.$vuetify.breakpoint.lgAndUp },
drawerDraggingStyle () {
@@ -165,7 +164,7 @@ export default {
drawerOpen (value) { localStorage.setItem('drawerOpen', value) }
},
methods: {
- ...mapMutations(['setLoginRedirect', 'setUserFullName']),
+ ...mapMutations(['setLoginRedirect']),
toggleDrawer () {
if (this.settings.mini && this.desktop) this.drawerMini = !this.drawerMini
else this.drawerOpen = !this.drawerOpen
@@ -204,10 +203,7 @@ export default {
},
created () {
if (this.settings.mini && this.desktop) this.drawerOpen = true
- this.$http('/api/users/current').then(response => {
- this.setUserFullName(response.data.name)
- this.userName = response.data.username
- })
+ this.$store.dispatch('loadUser')
}
}
</script>
diff --git a/webapp/src/components/UserCreateForm.vue b/webapp/src/components/UserCreateForm.vue
index 4287e1d..fc83227 100644
--- a/webapp/src/components/UserCreateForm.vue
+++ b/webapp/src/components/UserCreateForm.vue
@@ -106,7 +106,8 @@ export default {
confirmPassword: '',
name: '',
email: ''
- }
+ },
+ username: ''
}
},
computed: {
@@ -146,7 +147,7 @@ export default {
this.$refs.form.validate()
},
usernameTakenValidation (v) {
- if (this.id) return true
+ if (this.user.username === this.username) return true
else return !this.usernameExistsError
},
pwRequired (v) {
@@ -163,7 +164,9 @@ export default {
},
loadUser (id) {
this.$http('/api/users/' + id).then(response => {
- let user = response.data
+ const user = response.data
+ // Username is used for username taken validation
+ this.username = user.username
this.user.username = user.username
this.user.email = user.email
this.user.name = user.name
diff --git a/webapp/src/components/UserModuleEdit.vue b/webapp/src/components/UserModuleEdit.vue
index e989c11..e4f3cb0 100644
--- a/webapp/src/components/UserModuleEdit.vue
+++ b/webapp/src/components/UserModuleEdit.vue
@@ -22,7 +22,7 @@
</v-card-title>
<v-card-text style="height: 100%;">
<div class="edit-user">
- <signup v-model="user" ref="editComponent" :id="dialog.info.id"></signup>
+ <signup v-model="userForm" ref="editComponent" :id="dialog.info.id"></signup>
</div>
</v-card-text>
<v-divider></v-divider>
@@ -35,7 +35,7 @@
</template>
<script>
-import { mapState } from 'vuex'
+import { mapState, mapMutations, mapGetters } from 'vuex'
import signup from '@/components/UserCreateForm'
export default {
@@ -45,13 +45,15 @@ export default {
},
data () {
return {
- user: { }
+ userForm: { }
}
},
computed: {
- ...mapState('users', ['dialog'])
+ ...mapState('users', ['dialog']),
+ ...mapGetters(['user'])
},
methods: {
+ ...mapMutations('setUserFullName', 'setUserName'),
setDialog (data) {
this.$store.commit('users/setDialog', data)
},
@@ -62,11 +64,12 @@ export default {
url += '/' + this.dialog.info.id
}
this.$http.post(url, {
- username: this.user.username,
- password: this.user.password,
- name: this.user.name,
- email: this.user.email
+ username: this.userForm.username,
+ password: this.userForm.password,
+ name: this.userForm.name,
+ email: this.userForm.email
}).then(response => {
+ if (this.dialog.info.id === this.user.id) this.$store.dispatch('loadUser')
this.$store.dispatch('users/loadData')
this.setDialog({ show: false })
this.$snackbar({ color: 'success', text: this.dialog.info.id ? this.$t('userUpdated') : this.$t('userCreated') })
diff --git a/webapp/src/store/global.js b/webapp/src/store/global.js
index 2a564e4..b08c751 100644
--- a/webapp/src/store/global.js
+++ b/webapp/src/store/global.js
@@ -1,3 +1,4 @@
+import axios from 'axios'
function loadSetting (name, defaultValue) {
const value = localStorage.getItem('settings.' + name)
switch (typeof defaultValue) {
@@ -20,17 +21,34 @@ export default {
mini: loadSetting('mini', true)
},
loginRedirect: null,
- userFullName: 'unnamed'
+ user: {
+ id: undefined,
+ name: undefined,
+ username: undefined,
+ email: undefined
+ }
},
getters: {
tabsDark: state => state.settings.dark || state.settings.coloredTabs,
tabsColor: state => state.settings.coloredTabs ? 'primary' : '',
tabsSliderColor: state => state.settings.coloredTabs ? 'white' : 'primary',
- userFullName: state => state.userFullName
+ user: state => state.user
},
mutations: {
setLoginRedirect: (state, value) => { state.loginRedirect = value },
saveSetting (state, { name, value }) { if (name in state.settings) state.settings[name] = value; localStorage.setItem('settings.' + name, value) },
- setUserFullName: (state, value) => { state.userFullName = value }
+ setUser: (state, value) => {
+ state.user.id = value.id
+ state.user.name = value.name
+ state.user.username = value.username
+ state.user.email = value.email
+ }
+ },
+ actions: {
+ loadUser (context) {
+ axios.get('/api/users/current').then(response => {
+ context.commit('setUser', response.data)
+ })
+ }
}
}
diff --git a/webapp/src/store/users.js b/webapp/src/store/users.js
index 9e0f13c..66d41b7 100644
--- a/webapp/src/store/users.js
+++ b/webapp/src/store/users.js
@@ -1,4 +1,3 @@
-
import axios from 'axios'
export default {