Moved password reset request to model/service
All checks were successful
the build was successful

This commit is contained in:
konrad 2019-02-27 20:18:39 +01:00
parent 4385b02fa0
commit b436145437
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
3 changed files with 52 additions and 20 deletions

View File

@ -21,7 +21,6 @@
placeholder="Type to search a user"
label="username"
track-by="id">
<template slot="clear" slot-scope="props">
<div class="multiselect__clear" v-if="user.id !== 0" @mousedown.prevent.stop="clearAll(props.search)"></div>
</template>

View File

@ -5,13 +5,13 @@
<form id="loginform" @submit.prevent="submit" v-if="!isSuccess">
<div class="field">
<div class="control">
<input v-focus type="text" class="input" name="email" placeholder="Email-Adress" v-model="email" required>
<input v-focus type="text" class="input" name="email" placeholder="Email-Adress" v-model="passwordReset.email" required>
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button type="submit" class="button is-primary" v-bind:class="{ 'is-loading': loading}">Send me a password reset link</button>
<button type="submit" class="button is-primary" v-bind:class="{ 'is-loading': passwordResetService.loading}">Send me a password reset link</button>
<router-link :to="{ name: 'login' }" class="button">Login</router-link>
</div>
</div>
@ -30,41 +30,33 @@
</template>
<script>
import {HTTP} from '../../http-common'
import message from '../../message'
import PasswordResetModel from '../../models/passwordReset'
import PasswordResetService from '../../services/passwordReset'
export default {
data() {
return {
passwordResetService: PasswordResetService,
passwordReset: PasswordResetModel,
email: '',
error: '',
isSuccess: false,
loading: false
isSuccess: false
}
},
created() {
this.passwordResetService = new PasswordResetService()
this.passwordReset = new PasswordResetModel()
},
methods: {
submit() {
const cancel = message.setLoading(this)
this.error = ''
let credentials = {
email: this.email,
}
HTTP.post(`user/password/token`, credentials)
this.passwordResetService.requestResetPassword(this.passwordReset)
.then(() => {
cancel()
this.isSuccess = true
})
.catch(e => {
cancel()
this.handleError(e)
this.error = e.response.data.message
})
},
handleError(e) {
this.error = e.response.data.message
},
}
}
</script>

View File

@ -0,0 +1,41 @@
import AbstractService from './abstractService'
import PasswordResetModel from '../models/passwordReset'
export default class PasswordResetService extends AbstractService {
paths = {
reset: '/user/password/reset',
requestReset: '/user/password/token',
}
modelFactory(data) {
return new PasswordResetModel(data)
}
resetPassword(model) {
const cancel = this.setLoading()
return this.http.post(this.paths.reset, model)
.catch(error => {
return this.errorHandler(error)
})
.then(response => {
return Promise.resolve(this.modelFactory(response.data))
})
.finally(() => {
cancel()
})
}
requestResetPassword(model) {
const cancel = this.setLoading()
return this.http.post(this.paths.requestReset, model)
.catch(error => {
return this.errorHandler(error)
})
.then(response => {
return Promise.resolve(this.modelFactory(response.data))
})
.finally(() => {
cancel()
})
}
}