From 822559afd889262f0dc6989531a54a21a01beadc Mon Sep 17 00:00:00 2001 From: raeno Date: Mon, 3 Dec 2018 22:43:58 +0400 Subject: [PATCH] Humanize validation errors returned on registration --- src/components/registration/registration.js | 10 ++++++---- src/components/registration/registration.vue | 6 ++++-- src/modules/errors.js | 12 ++++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/modules/errors.js diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js index f7f8a720..7e8b1848 100644 --- a/src/components/registration/registration.js +++ b/src/components/registration/registration.js @@ -1,9 +1,10 @@ import oauthApi from '../../services/new_api/oauth.js' +import { humanizeErrors } from '../../modules/errors' const registration = { data: () => ({ user: {}, - error: false, + errors: [], registering: false }), created () { @@ -37,7 +38,8 @@ const registration = { app, instance: data.instance, username: this.user.username, - password: this.user.password}) + password: this.user.password + }) .then((result) => { this.$store.commit('setToken', result.access_token) this.$store.dispatch('loginUser', result.access_token) @@ -47,10 +49,10 @@ const registration = { } else { this.registering = false response.json().then((data) => { - this.error = data.error + this.errors = humanizeErrors(JSON.parse(data.error)) }) } - } + }, ) } } diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue index 087cab6b..867e26f0 100644 --- a/src/components/registration/registration.vue +++ b/src/components/registration/registration.vue @@ -49,8 +49,10 @@
-
-
{{error}}
+
+
+ {{error}} +
diff --git a/src/modules/errors.js b/src/modules/errors.js new file mode 100644 index 00000000..25b5bd81 --- /dev/null +++ b/src/modules/errors.js @@ -0,0 +1,12 @@ +import {capitalize, reduce} from 'lodash' + +export function humanizeErrors (errors) { + return reduce(errors, (errs, val, k) => { + let message = reduce(val, (acc, message) => { + let key = capitalize(k.replace(/_/g, ' ')) + return acc + [key, message].join(' ') + '. ' + }, '') + return [...errs, message] + }, []) +} +