mirror of
https://github.com/IT4Change/gradido.git
synced 2026-01-16 01:44:31 +00:00
114 lines
3.0 KiB
Vue
114 lines
3.0 KiB
Vue
<template>
|
|
<div class="resetpwd-form">
|
|
<div class="pb-5">{{ $t('site.resetPassword.heading') }}</div>
|
|
<validation-observer ref="observer" v-slot="{ handleSubmit }">
|
|
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)">
|
|
<input-password-confirmation v-model="form" />
|
|
<div class="text-center">
|
|
<b-button type="submit" variant="gradido" class="mt-4">
|
|
<!-- eslint-disable-next-line @intlify/vue-i18n/no-dynamic-keys-->
|
|
{{ $t(displaySetup.button) }}
|
|
</b-button>
|
|
</div>
|
|
</b-form>
|
|
</validation-observer>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import InputPasswordConfirmation from '@/components/Inputs/InputPasswordConfirmation'
|
|
import { setPassword } from '@/graphql/mutations'
|
|
import { queryOptIn } from '@/graphql/queries'
|
|
|
|
const textFields = {
|
|
reset: {
|
|
title: 'settings.password.change-password',
|
|
text: 'settings.password.reset-password.text',
|
|
button: 'settings.password.change-password',
|
|
linkTo: '/login',
|
|
},
|
|
checkEmail: {
|
|
title: 'settings.password.set',
|
|
text: 'settings.password.set-password.text',
|
|
button: 'settings.password.set',
|
|
linkTo: '/login',
|
|
},
|
|
}
|
|
|
|
export default {
|
|
name: 'ResetPassword',
|
|
components: {
|
|
InputPasswordConfirmation,
|
|
},
|
|
data() {
|
|
return {
|
|
form: {
|
|
password: '',
|
|
passwordRepeat: '',
|
|
},
|
|
displaySetup: {},
|
|
}
|
|
},
|
|
methods: {
|
|
async onSubmit() {
|
|
this.$apollo
|
|
.mutate({
|
|
mutation: setPassword,
|
|
variables: {
|
|
code: this.$route.params.optin,
|
|
password: this.form.password,
|
|
},
|
|
})
|
|
.then(() => {
|
|
this.form.password = ''
|
|
if (this.$route.path.includes('checkEmail')) {
|
|
if (this.$route.params.code) {
|
|
this.$router.push('/thx/checkEmail/' + this.$route.params.code)
|
|
} else {
|
|
this.$router.push('/thx/checkEmail')
|
|
}
|
|
} else {
|
|
this.$router.push('/thx/resetPassword')
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.toastError(error.message)
|
|
if (
|
|
error.message.match(
|
|
/email was sent more than ([0-9]+ hours)?( and )?([0-9]+ minutes)? ago/,
|
|
)
|
|
)
|
|
this.$router.push('/forgot-password/resetPassword')
|
|
})
|
|
},
|
|
checkOptInCode() {
|
|
this.$apollo
|
|
.query({
|
|
query: queryOptIn,
|
|
variables: {
|
|
optIn: this.$route.params.optin,
|
|
},
|
|
})
|
|
.then()
|
|
.catch((error) => {
|
|
this.toastError(error.message)
|
|
this.$router.push('/forgot-password/resetPassword')
|
|
})
|
|
},
|
|
setDisplaySetup() {
|
|
this.checkOptInCode()
|
|
if (this.$route.path.includes('checkEmail')) {
|
|
this.displaySetup = textFields.checkEmail
|
|
}
|
|
if (this.$route.path.includes('reset-password')) {
|
|
this.displaySetup = textFields.reset
|
|
}
|
|
},
|
|
},
|
|
created() {
|
|
this.$emit('set-mobile-start', false)
|
|
this.setDisplaySetup()
|
|
},
|
|
}
|
|
</script>
|