From 82c00449638a7aa06b63454f6dc5a44924a6d36e Mon Sep 17 00:00:00 2001 From: tusooa Date: Tue, 25 Jul 2023 10:46:27 -0400 Subject: [PATCH 1/2] Show a dedicated registration notice page when further action is required after registering --- changelog.d/registration-notice.add | 1 + src/components/registration/registration.js | 10 ++++++++-- src/components/registration/registration.vue | 14 ++++++++++++- src/modules/users.js | 21 +++++++++++++++++--- 4 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 changelog.d/registration-notice.add diff --git a/changelog.d/registration-notice.add b/changelog.d/registration-notice.add new file mode 100644 index 0000000000..b2777ba2de --- /dev/null +++ b/changelog.d/registration-notice.add @@ -0,0 +1 @@ +Show a dedicated registration notice page when further action is required after registering diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js index b88bdeecb2..ca1fed944a 100644 --- a/src/components/registration/registration.js +++ b/src/components/registration/registration.js @@ -83,6 +83,8 @@ const registration = { signedIn: (state) => !!state.users.currentUser, isPending: (state) => state.users.signUpPending, serverValidationErrors: (state) => state.users.signUpErrors, + signUpNotice: (state) => state.users.signUpNotice, + hasSignUpNotice: (state) => !!state.users.signUpNotice.message, termsOfService: (state) => state.instance.tos, accountActivationRequired: (state) => state.instance.accountActivationRequired, accountApprovalRequired: (state) => state.instance.accountApprovalRequired, @@ -107,8 +109,12 @@ const registration = { if (!this.v$.$invalid) { try { - await this.signUp(this.user) - this.$router.push({ name: 'friends' }) + const status = await this.signUp(this.user) + if (status === 'ok') { + this.$router.push({ name: 'friends' }) + } else { + // display sign up notice, do not switch anywhere + } } catch (error) { console.warn('Registration failed: ', error) this.setCaptcha() diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue index 7438a5f4d7..5c913f94c2 100644 --- a/src/components/registration/registration.vue +++ b/src/components/registration/registration.vue @@ -3,7 +3,10 @@
{{ $t('registration.registration') }}
-
+
+
+

+ {{ signUpNotice.message }} +

+
@@ -404,6 +412,10 @@ $validations-cRed: #f04124; } } +.registration-notice { + margin: 0.6em; +} + @media all and (max-width: 800px) { .registration-form .container { flex-direction: column-reverse; diff --git a/src/modules/users.js b/src/modules/users.js index 6467d732f8..b8f49f1568 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -250,6 +250,7 @@ export const mutations = { signUpPending (state) { state.signUpPending = true state.signUpErrors = [] + state.signUpNotice = {} }, signUpSuccess (state) { state.signUpPending = false @@ -257,6 +258,12 @@ export const mutations = { signUpFailure (state, errors) { state.signUpPending = false state.signUpErrors = errors + state.signUpNotice = {} + }, + signUpNotice (state, notice) { + state.signUpPending = false + state.signUpErrors = [] + state.signUpNotice = notice } } @@ -287,6 +294,7 @@ export const defaultState = { usersByNameObject: {}, signUpPending: false, signUpErrors: [], + signUpNotice: {}, relationships: {} } @@ -524,9 +532,16 @@ const users = { const data = await rootState.api.backendInteractor.register( { params: { ...userInfo } } ) - store.commit('signUpSuccess') - store.commit('setToken', data.access_token) - store.dispatch('loginUser', data.access_token) + + if (data.access_token) { + store.commit('signUpSuccess') + store.commit('setToken', data.access_token) + store.dispatch('loginUser', data.access_token) + return 'ok' + } else { // Request succeeded, but user cannot login yet. + store.commit('signUpNotice', data) + return 'request_sent' + } } catch (e) { const errors = e.message store.commit('signUpFailure', errors) From 209c0a83325b9475b5ff9a4fd1ebede17d06ed63 Mon Sep 17 00:00:00 2001 From: tusooa Date: Sat, 13 Jan 2024 17:44:13 -0500 Subject: [PATCH 2/2] Remove empty else branch and detail the comments --- src/components/registration/registration.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js index ca1fed944a..78d319804c 100644 --- a/src/components/registration/registration.js +++ b/src/components/registration/registration.js @@ -112,9 +112,9 @@ const registration = { const status = await this.signUp(this.user) if (status === 'ok') { this.$router.push({ name: 'friends' }) - } else { - // display sign up notice, do not switch anywhere } + // If status is not 'ok' (i.e. it needs further actions to be done + // before you can login), display sign up notice, do not switch anywhere } catch (error) { console.warn('Registration failed: ', error) this.setCaptcha()