Merge branch 'passwordreset'

This commit is contained in:
Björn Fromme
2018-10-18 10:04:39 +02:00
4 changed files with 66 additions and 11 deletions
@@ -65,6 +65,21 @@ export default new Vuex.Store({
commit('logout'); commit('logout');
}); });
}, },
resetPassword({ commit }, email) {
commit('loadingBegin');
const formData = new FormData();
formData.append('email', email);
return axios({
url: '/api/reset-password',
data: formData,
method: 'post'
}).then(() => {
commit('loadingFinish');
}).catch((error) => {
commit('loadingFinish');
throw error;
});
},
loadCountries ({ commit }) { loadCountries ({ commit }) {
axios({ axios({
url: '/api/countries', url: '/api/countries',
@@ -75,7 +75,7 @@
</div> </div>
<div class="col-xs-12"> <div class="col-xs-12">
<div class="form-group"> <div class="form-group">
<button type="submit" class="button button--active"> <button type="submit" class="button button--active" :disabled="loading">
Speichern Speichern
</button> </button>
</div> </div>
@@ -1,26 +1,31 @@
<template> <template>
<div class="form-wrapper form--border col-xs-12 col-md-6" id="myep-main"> <div class="form-wrapper form--border col-xs-12 col-md-6" id="myep-main">
<h1>Login MyE&amp;P<img :src="loaderUrl" alt="" v-if="loading"></h1> <h1>Login MyE&amp;P<img :src="loaderUrl" alt="" v-if="loading"></h1>
<div v-if="message" class="alert alert-danger"> <div v-if="message" class="alert" :class="messageClass">
{{ message }} {{ message }}
</div> </div>
<form @submit.prevent="login()"> <form @submit.prevent="submit()">
<div class="form-group"> <div class="form-group">
<label for="email" class="control-label"> <label for="email" class="control-label">
E-Mail E-Mail
</label> </label>
<input id="email" type="text" v-model="email" class="form-control"> <input id="email" type="text" v-model="email" class="form-control">
</div> </div>
<div class="form-group"> <div class="form-group" v-if="loginMode">
<label for="password" class="control-label"> <label for="password" class="control-label">
Passwort Passwort
</label> </label>
<input id="password" type="password" v-model="password" class="form-control"> <input id="password" type="password" v-model="password" class="form-control">
</div> </div>
<div class="form-group"> <div class="form-group">
<button type="submit" class="button button--active"> <div class="btn-group">
Login <button type="submit" class="button" :disabled="loading">
{{ loginMode ? 'Login' : 'Zurücksetzen' }}
</button> </button>
<button class="button button--secondary" @click.prevent="toggleMode()">
{{ loginMode ? 'Passwort vergessen?' : 'Zum Login' }}
</button>
</div>
</div> </div>
</form> </form>
</div> </div>
@@ -32,15 +37,29 @@
export default { export default {
data () { data () {
return { return {
mode: 'login',
messageClass: '',
message: '', message: '',
email: '', email: '',
password: '' password: ''
} }
}, },
methods: { methods: {
toggleMode () {
this.mode = this.mode === 'login' ? 'reset' : 'login';
},
submit () {
this.message = '';
if (this.mode === 'login') {
this.login();
} else {
this.resetPassword();
}
},
login () { login () {
if (!this.email || !this.password) { if (!this.email || !this.password) {
this.message = 'Bitte E-Mail und Passwort angeben'; this.message = 'Bitte E-Mail und Passwort angeben';
this.messageClass = 'alert-danger';
return; return;
} }
this.$store.dispatch('login', { this.$store.dispatch('login', {
@@ -50,6 +69,23 @@
this.$router.push({ name: 'address' }); this.$router.push({ name: 'address' });
}).catch(() => { }).catch(() => {
this.message = 'Der Login ist fehlgeschlagen :('; this.message = 'Der Login ist fehlgeschlagen :(';
this.messageClass = 'alert-danger';
}).then(() => {
EventBus.$emit('scrollTo', '#myep-main');
});
},
resetPassword () {
if (!this.email) {
this.message = 'Bitte E-Mail Adresse angeben';
this.messageClass = 'alert-danger';
return;
}
this.$store.dispatch('resetPassword',
this.email
).then(() => {
this.email = '';
this.message = 'Du erhälts in Kürze eine E-Mail mit einem Link zum (Zurück)setzen deines Passworts';
this.messageClass = 'alert-success';
}).then(() => { }).then(() => {
EventBus.$emit('scrollTo', '#myep-main'); EventBus.$emit('scrollTo', '#myep-main');
}); });
@@ -61,6 +97,9 @@
}, },
loading () { loading () {
return this.$store.state.loading; return this.$store.state.loading;
},
loginMode () {
return this.mode === 'login';
} }
} }
} }
@@ -1,4 +1,6 @@
.button { .button,
button:active,
button:focus {
background-color: $color-button-background; background-color: $color-button-background;
color: $color-button-foreground; color: $color-button-foreground;
text-transform: uppercase; text-transform: uppercase;
@@ -15,9 +17,8 @@
} }
&--active, &--active,
&:active, &--secondary {
&:focus { background-color: $color-brand-primary;
background-color: $color-brand-secondary;
color: white; color: white;
} }