From 085eb25532210c0e0533d94cb03fc3ad413386b1 Mon Sep 17 00:00:00 2001 From: Bubka <858858+Bubka@users.noreply.github.com> Date: Wed, 5 Jul 2023 10:07:40 +0200 Subject: [PATCH] Handle Validation errors from webauthn during device registration (#200) --- resources/js/views/auth/Register.vue | 11 ++++++++++- resources/js/views/settings/WebAuthn.vue | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/resources/js/views/auth/Register.vue b/resources/js/views/auth/Register.vue index ce6cf588..c4648b5a 100644 --- a/resources/js/views/auth/Register.vue +++ b/resources/js/views/auth/Register.vue @@ -117,10 +117,19 @@ const publicKeyCredential = this.webauthn.parseOutgoingCredentials(bufferedCredentials); - this.axios.post('/webauthn/register', publicKeyCredential).then(response => { + this.axios.post('/webauthn/register', publicKeyCredential, {returnError: true}) + .then(response => { this.deviceId = publicKeyCredential.id this.deviceRegistered = true }) + .catch(error => { + if( error.response.status === 422 ) { + this.$notify({ type: 'is-danger', text: error.response.data.message }) + } + else { + this.$router.push({ name: 'genericError', params: { err: error.response } }); + } + }) }, diff --git a/resources/js/views/settings/WebAuthn.vue b/resources/js/views/settings/WebAuthn.vue index 7201b8fd..bbf4c2b1 100644 --- a/resources/js/views/settings/WebAuthn.vue +++ b/resources/js/views/settings/WebAuthn.vue @@ -172,9 +172,18 @@ const publicKeyCredential = this.webauthn.parseOutgoingCredentials(bufferedCredentials); - this.axios.post('/webauthn/register', publicKeyCredential).then(response => { + this.axios.post('/webauthn/register', publicKeyCredential, {returnError: true}) + .then(response => { this.$router.push({ name: 'settings.webauthn.editCredential', params: { id: publicKeyCredential.id, name: this.$t('auth.webauthn.my_device') } }) }) + .catch(error => { + if( error.response.status === 422 ) { + this.$notify({ type: 'is-danger', text: error.response.data.message }) + } + else { + this.$router.push({ name: 'genericError', params: { err: error.response } }); + } + }) },