logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe
commit: dac263e2242a5fbfaf677c0cbe1204278f5ce985
parent: ac90d4c5329c513d73871b3a2476761672453775
Author: Shpuld Shpludson <shp@cock.li>
Date:   Tue, 14 Jan 2020 13:45:00 +0000

Merge branch 'fix/registration-backend-interactor-fix' into 'develop'

Fix #750 , fix error messages and captcha resetting

Closes #750

See merge request pleroma/pleroma-fe!1042

Diffstat:

MCHANGELOG.md2++
Msrc/components/registration/registration.js3++-
Msrc/components/registration/registration.vue2+-
Msrc/modules/users.js4+++-
Msrc/services/errors/errors.js14++++++++++----
5 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -5,9 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] ### Changed +- Captcha now resets on failed registrations - Notifications column now cleans itself up to optimize performance when tab is left open for a long time ### Fixed - Single notifications left unread when hitting read on another device/tab +- Registration fixed ## [1.1.8] - 2020-01-10 ### Added diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js @@ -63,7 +63,8 @@ const registration = { await this.signUp(this.user) this.$router.push({ name: 'friends' }) } catch (error) { - console.warn('Registration failed: ' + error) + console.warn('Registration failed: ', error) + this.setCaptcha() } } }, diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue @@ -170,7 +170,7 @@ <label class="form--label" for="captcha-label" - >{{ $t('captcha') }}</label> + >{{ $t('registration.captcha') }}</label> <template v-if="['kocaptcha', 'native'].includes(captcha.type)"> <img diff --git a/src/modules/users.js b/src/modules/users.js @@ -401,7 +401,9 @@ const users = { let rootState = store.rootState try { - let data = await rootState.api.backendInteractor.register({ ...userInfo }) + let data = await rootState.api.backendInteractor.register( + { params: { ...userInfo } } + ) store.commit('signUpSuccess') store.commit('setToken', data.access_token) store.dispatch('loginUser', data.access_token) diff --git a/src/services/errors/errors.js b/src/services/errors/errors.js @@ -32,12 +32,18 @@ export class RegistrationError extends Error { } if (typeof error === 'object') { + const errorContents = JSON.parse(error.error) + // keys will have the property that has the error, for example 'ap_id', + // 'email' or 'captcha', the value will be an array of its error + // like "ap_id": ["has been taken"] or "captcha": ["Invalid CAPTCHA"] + // replace ap_id with username - if (error.ap_id) { - error.username = error.ap_id - delete error.ap_id + if (errorContents.ap_id) { + errorContents.username = errorContents.ap_id + delete errorContents.ap_id } - this.message = humanizeErrors(error) + + this.message = humanizeErrors(errorContents) } else { this.message = error }