User kann eigene Einstellungen updaten
This commit is contained in:
		
							parent
							
								
									c6ef18b009
								
							
						
					
					
						commit
						925982d700
					
				|  | @ -4,15 +4,13 @@ | |||
|       <q-input | ||||
|         class="col-xs-12 col-sm-6 q-pa-sm" | ||||
|         label="Vorname" | ||||
|         readonly | ||||
|         :value="user.firstname" | ||||
|         v-model="firstname" | ||||
|         filled | ||||
|       /> | ||||
|       <q-input | ||||
|         class="col-xs-12 col-sm-6 q-pa-sm" | ||||
|         label="Nachname" | ||||
|         readonly | ||||
|         :value="user.lastname" | ||||
|         v-model="lastname" | ||||
|         filled | ||||
|       /> | ||||
|       <q-input | ||||
|  | @ -25,8 +23,13 @@ | |||
|       <q-input | ||||
|         class="col-xs-12 col-sm-6 q-pa-sm" | ||||
|         label="E-Mail" | ||||
|         readonly | ||||
|         :value="user.mail" | ||||
|         v-model="mail" | ||||
|         filled | ||||
|       /> | ||||
|       <q-input | ||||
|         class="col-xs-12 col-sm-6 q-pa-sm" | ||||
|         label="Display Name" | ||||
|         v-model="display_name" | ||||
|         filled | ||||
|       /> | ||||
|       <q-select | ||||
|  | @ -50,33 +53,91 @@ | |||
|         class="col-xs-12 col-sm-6 col-md-4 q-pa-sm" | ||||
|         label="Password" | ||||
|         type="password" | ||||
|         hint="Password muss immer eingetragen werden" | ||||
|         v-model="password" | ||||
|         filled | ||||
|       /> | ||||
|       <q-input | ||||
|         class="col-xs-12 col-sm-6 col-md-4 q-pa-sm" | ||||
|         label="Neues Password" | ||||
|         type="password" | ||||
|         v-model="new_password" | ||||
|         :rules="[samePassword]" | ||||
|         filled | ||||
|       /> | ||||
|       <q-input | ||||
|         class="col-xs-12 col-sm-6 col-md-4 q-pa-sm" | ||||
|         label="Wiederhole neues Password" | ||||
|         type="password" | ||||
|         v-model="new_password2" | ||||
|         :disable="new_password.length == 0" | ||||
|         :rules="[samePassword]" | ||||
|         filled | ||||
|       /> | ||||
|     </q-card-section> | ||||
|     <q-card-actions align="right"> | ||||
|       <q-btn color="primary" label="Speichern" @click="save" /> | ||||
|     </q-card-actions> | ||||
|   </q-card> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import { computed, defineComponent } from '@vue/composition-api'; | ||||
| import { computed, defineComponent, ref } from '@vue/composition-api'; | ||||
| export default defineComponent({ | ||||
|   name: 'Main', | ||||
|   setup(_, { root: { $store } }) { | ||||
|     const user = computed(() => { | ||||
|       return $store.getters['user/user']; | ||||
|     const user = computed<FG.User>(() => { | ||||
|       return <FG.User>$store.getters['user/user']; | ||||
|     }); | ||||
|     return { user }; | ||||
| 
 | ||||
|     const firstname = ref(user.value.firstname); | ||||
|     const lastname = ref(user.value.lastname); | ||||
|     const mail = ref(user.value.mail); | ||||
|     const display_name = ref(user.value.display_name); | ||||
| 
 | ||||
|     const password = ref<string>(''); | ||||
|     const new_password = ref<string>(''); | ||||
|     const new_password2 = ref<string>(''); | ||||
| 
 | ||||
|     function save() { | ||||
|       let change_values = { | ||||
|         firstname: firstname.value, | ||||
|         lastname: lastname.value, | ||||
|         mail: mail.value, | ||||
|         display_name: display_name.value | ||||
|       }; | ||||
|       Object.keys(change_values).forEach(key => { | ||||
|         if (change_values[key] === user.value[key]) { | ||||
|           delete change_values[key]; | ||||
|         } | ||||
|       }); | ||||
|       change_values = Object.assign(change_values, { | ||||
|         password: password.value | ||||
|       }); | ||||
|       if (new_password.value != '') { | ||||
|         change_values = Object.assign(change_values, { | ||||
|           new_password: new_password.value | ||||
|         }); | ||||
|       } | ||||
|       console.log(change_values); | ||||
|       $store.dispatch('user/updateUser', change_values); | ||||
|     } | ||||
|     function samePassword(val) { | ||||
|       return val == new_password.value || 'Passwörter sind nicht identisch!'; | ||||
|     } | ||||
| 
 | ||||
|     return { | ||||
|       user, | ||||
|       firstname, | ||||
|       lastname, | ||||
|       mail, | ||||
|       display_name, | ||||
|       password, | ||||
|       new_password, | ||||
|       new_password2, | ||||
|       samePassword, | ||||
|       save | ||||
|     }; | ||||
|   } | ||||
| }); | ||||
| </script> | ||||
|  |  | |||
|  | @ -35,22 +35,22 @@ const state: UserStateInterface = { | |||
| }; | ||||
| 
 | ||||
| const mutations: MutationTree<UserStateInterface> = { | ||||
|   setUser (state, data: FG.User) { | ||||
|   setUser(state, data: FG.User) { | ||||
|     state.user = data; | ||||
|   }, | ||||
|   setSession (state, data: FG.Session) { | ||||
|   setSession(state, data: FG.Session) { | ||||
|     state.session = data; | ||||
|   }, | ||||
|   setLoginLoading (state, data: boolean) { | ||||
|   setLoginLoading(state, data: boolean) { | ||||
|     state.loginLoading = data; | ||||
|   }, | ||||
|   showState (state) { | ||||
|   showState(state) { | ||||
|     console.log(state); | ||||
|   } | ||||
| }; | ||||
| 
 | ||||
| const actions: ActionTree<UserStateInterface, StateInterface> = { | ||||
|   login ({ commit }, data: LoginData) { | ||||
|   login({ commit }, data: LoginData) { | ||||
|     commit('setLoginLoading', true); | ||||
|     Loading.show({ message: 'Du wirst eingeloggt' }); | ||||
|     void axios | ||||
|  | @ -73,7 +73,7 @@ const actions: ActionTree<UserStateInterface, StateInterface> = { | |||
|         Loading.hide(); | ||||
|       }); | ||||
|   }, | ||||
|   logout ({ commit }, token) { | ||||
|   logout({ commit }, token) { | ||||
|     void axios.delete(`/auth/${token}`).then(() => { | ||||
|       commit('setUser', { | ||||
|         display_name: '', | ||||
|  | @ -92,45 +92,61 @@ const actions: ActionTree<UserStateInterface, StateInterface> = { | |||
|       }); | ||||
|     }); | ||||
|   }, | ||||
|   loadFromLocalStorage ({ commit }) { | ||||
|   updateUser({ commit, getters }, data) { | ||||
|     commit('setLoginLoading', true); | ||||
|     axios | ||||
|       .put(`/users/${getters.user.userid}`, data) | ||||
|       .catch(error => { | ||||
|         console.log(error); | ||||
|       }) | ||||
|       .finally(() => { | ||||
|         commit('setLoginLoading', false); | ||||
|       }); | ||||
|   }, | ||||
|   loadFromLocalStorage({ commit }) { | ||||
|     console.log('load from store'); | ||||
|     let data = LocalStorage.getItem('user'); | ||||
|     commit('setUser', data ? data : { | ||||
|       display_name: '', | ||||
|       firstname: '', | ||||
|       lastname: '', | ||||
|       mail: '', | ||||
|       roles: [], | ||||
|       userid: '' | ||||
|     }); | ||||
|     commit( | ||||
|       'setUser', | ||||
|       data | ||||
|         ? data | ||||
|         : { | ||||
|             display_name: '', | ||||
|             firstname: '', | ||||
|             lastname: '', | ||||
|             mail: '', | ||||
|             roles: [], | ||||
|             userid: '' | ||||
|           } | ||||
|     ); | ||||
|     data = LocalStorage.getItem('session'); | ||||
|     commit( | ||||
|       'setSession', | ||||
|       data | ||||
|         ? data | ||||
|         : { | ||||
|           browser: '', | ||||
|           expires: new Date(), | ||||
|           lifetime: -1, | ||||
|           platform: '', | ||||
|           token: '' | ||||
|         } | ||||
|             browser: '', | ||||
|             expires: new Date(), | ||||
|             lifetime: -1, | ||||
|             platform: '', | ||||
|             token: '' | ||||
|           } | ||||
|     ); | ||||
|     commit('showState'); | ||||
|   } | ||||
| }; | ||||
| 
 | ||||
| const getters: GetterTree<UserStateInterface, StateInterface> = { | ||||
|   user ({ user }) { | ||||
|   user({ user }) { | ||||
|     return user; | ||||
|   }, | ||||
|   displayName ({ user }) { | ||||
|   displayName({ user }) { | ||||
|     return user.display_name; | ||||
|   }, | ||||
|   session ({ session }) { | ||||
|   session({ session }) { | ||||
|     return session; | ||||
|   }, | ||||
|   loginLoading ({ loginLoading }) { | ||||
|   loginLoading({ loginLoading }) { | ||||
|     return loginLoading; | ||||
|   } | ||||
| }; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue