From 8f72c4282ae922b405f635a8b4d2b68d0a2eb7ec Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 22 May 2025 20:24:02 +0200 Subject: [PATCH] improve login & invite mechanics (#8574) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- .../Registration/RegistrationSlideCreate.vue | 44 +++++++++---------- .../Registration/RegistrationSlideEmail.vue | 22 ++++------ .../Registration/RegistrationSlideInvite.vue | 31 +++++-------- .../RegistrationSlideNoPublic.vue | 8 +--- .../Registration/RegistrationSlideNonce.vue | 27 +++--------- 5 files changed, 49 insertions(+), 83 deletions(-) diff --git a/webapp/components/Registration/RegistrationSlideCreate.vue b/webapp/components/Registration/RegistrationSlideCreate.vue index 9aab5d77a..86741a90c 100644 --- a/webapp/components/Registration/RegistrationSlideCreate.vue +++ b/webapp/components/Registration/RegistrationSlideCreate.vue @@ -171,31 +171,27 @@ export default { } }, mounted: function () { - this.$nextTick(function () { - // Code that will run only after the entire view has been rendered + this.formData.name = this.sliderData.collectedInputData.name + ? this.sliderData.collectedInputData.name + : '' + this.formData.password = this.sliderData.collectedInputData.password + ? this.sliderData.collectedInputData.password + : '' + this.formData.passwordConfirmation = this.sliderData.collectedInputData.passwordConfirmation + ? this.sliderData.collectedInputData.passwordConfirmation + : '' + this.termsAndConditionsConfirmed = this.sliderData.collectedInputData + .termsAndConditionsConfirmed + ? this.sliderData.collectedInputData.termsAndConditionsConfirmed + : false + this.recieveCommunicationAsEmailsEtcConfirmed = this.sliderData.collectedInputData + .recieveCommunicationAsEmailsEtcConfirmed + ? this.sliderData.collectedInputData.recieveCommunicationAsEmailsEtcConfirmed + : false + this.sendValidation() - this.formData.name = this.sliderData.collectedInputData.name - ? this.sliderData.collectedInputData.name - : '' - this.formData.password = this.sliderData.collectedInputData.password - ? this.sliderData.collectedInputData.password - : '' - this.formData.passwordConfirmation = this.sliderData.collectedInputData.passwordConfirmation - ? this.sliderData.collectedInputData.passwordConfirmation - : '' - this.termsAndConditionsConfirmed = this.sliderData.collectedInputData - .termsAndConditionsConfirmed - ? this.sliderData.collectedInputData.termsAndConditionsConfirmed - : false - this.recieveCommunicationAsEmailsEtcConfirmed = this.sliderData.collectedInputData - .recieveCommunicationAsEmailsEtcConfirmed - ? this.sliderData.collectedInputData.recieveCommunicationAsEmailsEtcConfirmed - : false - this.sendValidation() - - this.sliderData.setSliderValuesCallback(this.validInput, { - sliderSettings: { buttonSliderCallback: this.onNextClick }, - }) + this.sliderData.setSliderValuesCallback(this.validInput, { + sliderSettings: { buttonSliderCallback: this.onNextClick }, }) }, computed: { diff --git a/webapp/components/Registration/RegistrationSlideEmail.vue b/webapp/components/Registration/RegistrationSlideEmail.vue index 96441dee8..0a74858be 100644 --- a/webapp/components/Registration/RegistrationSlideEmail.vue +++ b/webapp/components/Registration/RegistrationSlideEmail.vue @@ -67,20 +67,16 @@ export default { } }, mounted: function () { - this.$nextTick(function () { - // Code that will run only after the entire view has been rendered + this.formData.email = this.sliderData.collectedInputData.email + ? this.sliderData.collectedInputData.email + : '' + this.sendValidation() - this.formData.email = this.sliderData.collectedInputData.email - ? this.sliderData.collectedInputData.email - : '' - this.sendValidation() - - this.sliderData.setSliderValuesCallback(this.validInput, { - sliderSettings: { - ...this.buttonValues().sliderSettings, - buttonSliderCallback: this.onNextClick, - }, - }) + this.sliderData.setSliderValuesCallback(this.validInput, { + sliderSettings: { + ...this.buttonValues().sliderSettings, + buttonSliderCallback: this.onNextClick, + }, }) }, watch: { diff --git a/webapp/components/Registration/RegistrationSlideInvite.vue b/webapp/components/Registration/RegistrationSlideInvite.vue index 276dec737..b11c42db4 100644 --- a/webapp/components/Registration/RegistrationSlideInvite.vue +++ b/webapp/components/Registration/RegistrationSlideInvite.vue @@ -75,17 +75,13 @@ export default { } }, mounted: function () { - this.$nextTick(function () { - // Code that will run only after the entire view has been rendered + this.formData.inviteCode = this.sliderData.collectedInputData.inviteCode + ? this.sliderData.collectedInputData.inviteCode + : '' + this.sendValidation() - this.formData.inviteCode = this.sliderData.collectedInputData.inviteCode - ? this.sliderData.collectedInputData.inviteCode - : '' - this.sendValidation() - - this.sliderData.setSliderValuesCallback(this.validInput, { - sliderSettings: { buttonSliderCallback: this.onNextClick }, - }) + this.sliderData.setSliderValuesCallback(this.validInput, { + sliderSettings: { buttonSliderCallback: this.onNextClick }, }) }, computed: { @@ -96,12 +92,14 @@ export default { return this.formData.inviteCode.length === 6 }, invitedBy() { - return this.sliderData.sliders[this.sliderIndex].data.response.validateInviteCode + return this.validInput && + this.sliderData.sliders[this.sliderIndex].data.response.validateInviteCode ? this.sliderData.sliders[this.sliderIndex].data.response.validateInviteCode.generatedBy : null }, invitedTo() { - return this.sliderData.sliders[this.sliderIndex].data.response.validateInviteCode + return this.validInput && + this.sliderData.sliders[this.sliderIndex].data.response.validateInviteCode ? this.sliderData.sliders[this.sliderIndex].data.response.validateInviteCode.invitedTo : null }, @@ -124,18 +122,11 @@ export default { async handleInputValid() { this.sendValidation() }, - isVariablesRequested(variables) { - return ( - this.sliderData.sliders[this.sliderIndex].data.request && - this.sliderData.sliders[this.sliderIndex].data.request.variables && - this.sliderData.sliders[this.sliderIndex].data.request.variables.code === variables.code - ) - }, async handleSubmitVerify() { const { inviteCode } = this.sliderData.collectedInputData const variables = { code: inviteCode } - if (!this.isVariablesRequested(variables) && !this.dbRequestInProgress) { + if (!this.dbRequestInProgress) { try { this.dbRequestInProgress = true diff --git a/webapp/components/Registration/RegistrationSlideNoPublic.vue b/webapp/components/Registration/RegistrationSlideNoPublic.vue index c5f815ef4..8c5edcf5b 100644 --- a/webapp/components/Registration/RegistrationSlideNoPublic.vue +++ b/webapp/components/Registration/RegistrationSlideNoPublic.vue @@ -18,12 +18,8 @@ export default { sliderData: { type: Object, required: true }, }, mounted: function () { - this.$nextTick(function () { - // Code that will run only after the entire view has been rendered - - this.sliderData.setSliderValuesCallback(true, { - sliderSettings: { buttonSliderCallback: this.onNextClick }, - }) + this.sliderData.setSliderValuesCallback(true, { + sliderSettings: { buttonSliderCallback: this.onNextClick }, }) }, methods: { diff --git a/webapp/components/Registration/RegistrationSlideNonce.vue b/webapp/components/Registration/RegistrationSlideNonce.vue index 844298611..0bc466e58 100644 --- a/webapp/components/Registration/RegistrationSlideNonce.vue +++ b/webapp/components/Registration/RegistrationSlideNonce.vue @@ -66,17 +66,13 @@ export default { } }, mounted: function () { - this.$nextTick(function () { - // Code that will run only after the entire view has been rendered + this.formData.nonce = this.sliderData.collectedInputData.nonce + ? this.sliderData.collectedInputData.nonce + : '' + this.sendValidation() - this.formData.nonce = this.sliderData.collectedInputData.nonce - ? this.sliderData.collectedInputData.nonce - : '' - this.sendValidation() - - this.sliderData.setSliderValuesCallback(this.validInput, { - sliderSettings: { buttonSliderCallback: this.onNextClick }, - }) + this.sliderData.setSliderValuesCallback(this.validInput, { + sliderSettings: { buttonSliderCallback: this.onNextClick }, }) }, computed: { @@ -109,20 +105,11 @@ export default { async handleInputValid() { this.sendValidation() }, - isVariablesRequested(variables) { - return ( - this.sliderData.sliders[this.sliderIndex].data.request && - this.sliderData.sliders[this.sliderIndex].data.request.variables && - this.sliderData.sliders[this.sliderIndex].data.request.variables.email === - variables.email && - this.sliderData.sliders[this.sliderIndex].data.request.variables.nonce === variables.nonce - ) - }, async handleSubmitVerify() { const { email, nonce } = this.sliderData.collectedInputData const variables = { email, nonce } - if (!this.isVariablesRequested(variables) && !this.dbRequestInProgress) { + if (!this.dbRequestInProgress) { try { this.dbRequestInProgress = true