fix: password reset

This commit is contained in:
kolaente 2022-10-20 16:15:58 +02:00
parent 4ed665fbd9
commit 73575302de
Signed by untrusted user: konrad
GPG Key ID: F40E70337AB24C9B
4 changed files with 20 additions and 4 deletions

View File

@ -55,4 +55,9 @@ context('Login', () => {
testAndAssertFailed(fixture) testAndAssertFailed(fixture)
}) })
it('Should redirect to /login when no user is logged in', () => {
cy.visit('/')
cy.url().should('include', '/login')
})
}) })

View File

@ -481,11 +481,20 @@ export function getAuthForRoute(route: RouteLocation) {
'openid.auth', 'openid.auth',
].includes(route.name as string) && ].includes(route.name as string) &&
localStorage.getItem('passwordResetToken') === null && localStorage.getItem('passwordResetToken') === null &&
localStorage.getItem('emailConfirmToken') === null localStorage.getItem('emailConfirmToken') === null &&
!(route.name === 'home' && typeof route.query.userPasswordReset !== 'undefined')
) { ) {
saveLastVisited(route.name as string, route.params) saveLastVisited(route.name as string, route.params)
return {name: 'user.login'} return {name: 'user.login'}
} }
if(localStorage.getItem('passwordResetToken') !== null && route.name !== 'user.password-reset.reset') {
return {name: 'user.password-reset.reset'}
}
if(localStorage.getItem('emailConfirmToken') !== null && route.name !== 'user.login') {
return {name: 'user.login'}
}
} }
router.beforeEach((to) => { router.beforeEach((to) => {

View File

@ -7,7 +7,7 @@
<message variant="success"> <message variant="success">
{{ successMessage }} {{ successMessage }}
</message> </message>
<x-button :to="{ name: 'user.login' }"> <x-button :to="{ name: 'user.login' }" class="mt-4">
{{ $t('user.auth.login') }} {{ $t('user.auth.login') }}
</x-button> </x-button>
</div> </div>
@ -34,6 +34,7 @@
<script setup lang="ts"> <script setup lang="ts">
import {ref, reactive} from 'vue' import {ref, reactive} from 'vue'
import {useI18n} from 'vue-i18n' import {useI18n} from 'vue-i18n'
import {useRouter} from 'vue-router'
import PasswordResetModel from '@/models/passwordReset' import PasswordResetModel from '@/models/passwordReset'
import PasswordResetService from '@/services/passwordReset' import PasswordResetService from '@/services/passwordReset'
@ -41,6 +42,7 @@ import Message from '@/components/misc/message.vue'
import Password from '@/components/input/password.vue' import Password from '@/components/input/password.vue'
const {t} = useI18n({useScope: 'global'}) const {t} = useI18n({useScope: 'global'})
const router = useRouter()
const credentials = reactive({ const credentials = reactive({
password: '', password: '',
@ -59,7 +61,7 @@ async function submit() {
const passwordReset = new PasswordResetModel({newPassword: credentials.password}) const passwordReset = new PasswordResetModel({newPassword: credentials.password})
try { try {
const {message} = passwordResetService.resetPassword(passwordReset) const {message} = await passwordResetService.resetPassword(passwordReset)
successMessage.value = message successMessage.value = message
localStorage.removeItem('passwordResetToken') localStorage.removeItem('passwordResetToken')
} catch (e) { } catch (e) {

View File

@ -7,7 +7,7 @@
<message variant="success"> <message variant="success">
{{ $t('user.auth.resetPasswordSuccess') }} {{ $t('user.auth.resetPasswordSuccess') }}
</message> </message>
<x-button :to="{ name: 'user.login' }"> <x-button :to="{ name: 'user.login' }" class="mt-4">
{{ $t('user.auth.login') }} {{ $t('user.auth.login') }}
</x-button> </x-button>
</div> </div>