From c29245b3cae16734fb15df0163cf304a0c84f316 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 10:00:03 +0100 Subject: [PATCH 01/35] Change the text if the account is not activated yet and changed the button so that we are send to reset password. --- frontend/src/locales/de.json | 2 +- frontend/src/views/Pages/thx.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 651944547..7ca877c08 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -197,7 +197,7 @@ "uppercase": "Großbuchstabe erforderlich." }, "thx": { - "activateEmail": "Dein Konto wurde noch nicht aktiviert. Bitte überprüfe deine E-Mail und klicke den Aktivierungslink!", + "activateEmail": "Dein Konto wurde noch nicht aktiviert. Bitte überprüfe deine E-Mail und klicke den Aktivierungslink! Oder fordere einen neuen Aktivierungslink über die password reset seite.", "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert.", "email": "Wir haben dir eine E-Mail gesendet.", "emailActivated": "Danke dass Du deine E-Mail bestätigt hast.", diff --git a/frontend/src/views/Pages/thx.vue b/frontend/src/views/Pages/thx.vue index 109f03573..605b88ca1 100644 --- a/frontend/src/views/Pages/thx.vue +++ b/frontend/src/views/Pages/thx.vue @@ -45,8 +45,8 @@ const textFields = { login: { headline: 'site.thx.errorTitle', subtitle: 'site.thx.activateEmail', - button: 'login', - linkTo: '/login', + button: 'settings.password.reset', + linkTo: '/password', }, } From 2a4f66a03dd03cdf3ca3c16eca7539132ec90f04 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 10:05:15 +0100 Subject: [PATCH 02/35] If optin code to old send user to the error page that says that the code is not active anymore. --- frontend/src/views/Pages/ResetPassword.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/views/Pages/ResetPassword.vue index 05d8a0f6e..393de74ac 100644 --- a/frontend/src/views/Pages/ResetPassword.vue +++ b/frontend/src/views/Pages/ResetPassword.vue @@ -96,8 +96,9 @@ export default { }) .catch((error) => { this.$toasted.global.error(error.message) - if (error.message.includes('Code is older than 10 minutes')) - this.$router.push('/password/reset') + if (error.message.includes('Code is older than 10 minutes')){ + this.$router.push('/thx/login') + } }) }, setDisplaySetup() { From 93aa8c4865b8b294ba0d715930d3a72d966f9858 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 11:14:47 +0100 Subject: [PATCH 03/35] Fix code style. --- frontend/src/views/Pages/ResetPassword.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/views/Pages/ResetPassword.vue index 393de74ac..c933e4032 100644 --- a/frontend/src/views/Pages/ResetPassword.vue +++ b/frontend/src/views/Pages/ResetPassword.vue @@ -96,7 +96,7 @@ export default { }) .catch((error) => { this.$toasted.global.error(error.message) - if (error.message.includes('Code is older than 10 minutes')){ + if (error.message.includes('Code is older than 10 minutes')) { this.$router.push('/thx/login') } }) From 3676a57398ceaf34328aa951da1c0eeb1a9ea067 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 13:03:24 +0100 Subject: [PATCH 04/35] Fix test so that the UI changes are represented in the tests. --- frontend/src/views/Pages/ResetPassword.spec.js | 4 ++-- frontend/src/views/Pages/thx.spec.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/views/Pages/ResetPassword.spec.js b/frontend/src/views/Pages/ResetPassword.spec.js index e28d16c3e..137a08897 100644 --- a/frontend/src/views/Pages/ResetPassword.spec.js +++ b/frontend/src/views/Pages/ResetPassword.spec.js @@ -146,8 +146,8 @@ describe('ResetPassword', () => { expect(toasterMock).toHaveBeenCalledWith('...Code is older than 10 minutes') }) - it('router pushes to /password/reset', () => { - expect(routerPushMock).toHaveBeenCalledWith('/password/reset') + it('router pushes to /thx/login', () => { + expect(routerPushMock).toHaveBeenCalledWith('/thx/login') }) }) diff --git a/frontend/src/views/Pages/thx.spec.js b/frontend/src/views/Pages/thx.spec.js index 16c5e3ffc..551ff7c77 100644 --- a/frontend/src/views/Pages/thx.spec.js +++ b/frontend/src/views/Pages/thx.spec.js @@ -99,11 +99,11 @@ describe('Thx', () => { }) it('renders the thanks redirect button', () => { - expect(wrapper.find('a.btn').text()).toBe('login') + expect(wrapper.find('a.btn').text()).toBe('settings.password.reset') }) - it('links the redirect button to /login', () => { - expect(wrapper.find('a.btn').attributes('href')).toBe('/login') + it('links the redirect button to /password', () => { + expect(wrapper.find('a.btn').attributes('href')).toBe('/password') }) }) }) From f5383e3c05169ef905f14af86b62849634a56ac5 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 14:11:54 +0100 Subject: [PATCH 05/35] In case where the user has used an OptIn code that was to old then the user is send to a thx/resetFailed page where he gets a message that the code was to old. --- frontend/src/locales/de.json | 1 + frontend/src/locales/en.json | 3 ++- frontend/src/views/Pages/ResetPassword.vue | 2 +- frontend/src/views/Pages/thx.vue | 6 ++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 7ca877c08..840cde454 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -204,6 +204,7 @@ "errorTitle": "Achtung!", "register": "Du bist jetzt registriert, bitte überprüfe deine Emails und klicke auf den Aktivierungslink.", "reset": "Dein Passwort wurde geändert.", + "resetPassword": "Den Code den Du genutzt hast ist zu alt bitte fordere ein neuen über die Passwort Reset Seite an.", "title": "Danke!" } }, diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index c6cbeed69..8cb2a609a 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -197,13 +197,14 @@ "uppercase": "One uppercase letter required." }, "thx": { - "activateEmail": "Your account has not been activated yet, please check your emails and click the activation link!", + "activateEmail": "Your account has not been activated yet, please check your emails and click the activation link! Or order a new activation link over the password reset page.", "checkEmail": "Your email has been successfully verified.", "email": "We have sent you an email.", "emailActivated": "Thank you your email has been activated.", "errorTitle": "Attention!", "register": "You are registered now, please check your emails and click the activation link.", "reset": "Your password has been changed.", + "resetPassword": "The code you used was to old please order a new on over the password reset page.", "title": "Thank you!" } }, diff --git a/frontend/src/views/Pages/ResetPassword.vue b/frontend/src/views/Pages/ResetPassword.vue index c933e4032..2e171936a 100644 --- a/frontend/src/views/Pages/ResetPassword.vue +++ b/frontend/src/views/Pages/ResetPassword.vue @@ -97,7 +97,7 @@ export default { .catch((error) => { this.$toasted.global.error(error.message) if (error.message.includes('Code is older than 10 minutes')) { - this.$router.push('/thx/login') + this.$router.push('/thx/resetFailed') } }) }, diff --git a/frontend/src/views/Pages/thx.vue b/frontend/src/views/Pages/thx.vue index 605b88ca1..29896108d 100644 --- a/frontend/src/views/Pages/thx.vue +++ b/frontend/src/views/Pages/thx.vue @@ -48,6 +48,12 @@ const textFields = { button: 'settings.password.reset', linkTo: '/password', }, + resetFailed: { + headline: 'site.thx.errorTitle', + subtitle: 'site.thx.resetPassword', + button: 'settings.password.reset', + linkTo: '/password', + }, } export default { From 2211c7cb28498e9339c34d34b3e01ae0570d0027 Mon Sep 17 00:00:00 2001 From: elweyn Date: Sat, 22 Jan 2022 14:14:20 +0100 Subject: [PATCH 06/35] Change of url in the UI needs to be transfered to the test. --- frontend/src/views/Pages/ResetPassword.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/Pages/ResetPassword.spec.js b/frontend/src/views/Pages/ResetPassword.spec.js index 137a08897..e3a7c81b1 100644 --- a/frontend/src/views/Pages/ResetPassword.spec.js +++ b/frontend/src/views/Pages/ResetPassword.spec.js @@ -146,8 +146,8 @@ describe('ResetPassword', () => { expect(toasterMock).toHaveBeenCalledWith('...Code is older than 10 minutes') }) - it('router pushes to /thx/login', () => { - expect(routerPushMock).toHaveBeenCalledWith('/thx/login') + it('router pushes to /thx/resetFailed', () => { + expect(routerPushMock).toHaveBeenCalledWith('/thx/resetFailed') }) }) From a284e49f0144f584867597e0ca4a605965b634a6 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 26 Jan 2022 14:44:53 +0100 Subject: [PATCH 07/35] Fix locales had a property that was not closed. --- frontend/src/locales/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index c071e92af..a97e7a2cc 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -198,7 +198,7 @@ }, "thx": { "activateEmail": "Dein Konto wurde noch nicht aktiviert. Bitte überprüfe deine E-Mail und klicke den Aktivierungslink! Oder fordere einen neuen Aktivierungslink über die password reset seite.", - "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert. Du kannst dich jetzt anmelden. + "checkEmail": "Deine E-Mail wurde erfolgreich verifiziert. Du kannst dich jetzt anmelden.", "email": "Wir haben dir eine E-Mail gesendet.", "emailActivated": "Danke dass Du deine E-Mail bestätigt hast.", "errorTitle": "Achtung!", From 0ca8e702d7b343bd2e543753de3ed8def7991ed7 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 26 Jan 2022 14:45:38 +0100 Subject: [PATCH 08/35] Adding default value to the InputEmail component. --- frontend/src/components/Inputs/InputEmail.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/Inputs/InputEmail.vue b/frontend/src/components/Inputs/InputEmail.vue index 2aa153486..32cc98e67 100644 --- a/frontend/src/components/Inputs/InputEmail.vue +++ b/frontend/src/components/Inputs/InputEmail.vue @@ -38,10 +38,11 @@ export default { label: { type: String, default: 'Email' }, placeholder: { type: String, default: 'Email' }, value: { required: true, type: String }, + defaultValue: { type: String }, }, data() { return { - currentValue: '', + currentValue: this.defaultValue !== null ? this.defaultValue : '', } }, computed: { From 8b60ba623a3cbed21f35bfaa7e4957c36c16f5c5 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 26 Jan 2022 14:47:21 +0100 Subject: [PATCH 09/35] Storing email in the store in case email not validated and no password set now. Taking email from store on forgotpassword. --- frontend/src/views/Pages/ForgotPassword.vue | 3 ++- frontend/src/views/Pages/Login.vue | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/Pages/ForgotPassword.vue b/frontend/src/views/Pages/ForgotPassword.vue index 654711dc7..c53015af7 100644 --- a/frontend/src/views/Pages/ForgotPassword.vue +++ b/frontend/src/views/Pages/ForgotPassword.vue @@ -19,7 +19,7 @@ - +
{{ $t(displaySetup.button) }} @@ -68,6 +68,7 @@ export default { email: '', }, displaySetup: {}, + defaultEmail: this.$store.state.email, } }, methods: { diff --git a/frontend/src/views/Pages/Login.vue b/frontend/src/views/Pages/Login.vue index 4d2b75d2a..5a05fa8a5 100755 --- a/frontend/src/views/Pages/Login.vue +++ b/frontend/src/views/Pages/Login.vue @@ -107,8 +107,10 @@ export default { .catch((error) => { this.$toasted.global.error(this.$t('error.no-account')) if (error.message.includes('User email not validated')) { + this.$store.commit('email', this.form.email) this.$router.push('/thx/login') } else if (error.message.includes('User has no password set yet')) { + this.$store.commit('email', this.form.email) this.$router.push('/reset/login') } loader.hide() From a4aabfc3695f9db9295840d4b6b917be6f49344d Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 11 Mar 2022 08:45:31 +0100 Subject: [PATCH 10/35] Changes coming from new changes added in here. --- frontend/src/pages/Login.vue | 2 ++ frontend/src/pages/thx.spec.js | 4 ++-- frontend/src/pages/thx.vue | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/Login.vue b/frontend/src/pages/Login.vue index 57b97200d..8546bf30b 100755 --- a/frontend/src/pages/Login.vue +++ b/frontend/src/pages/Login.vue @@ -107,8 +107,10 @@ export default { .catch((error) => { this.toastError(this.$t('error.no-account')) if (error.message.includes('User email not validated')) { + this.$store.commit('email', this.form.email) this.$router.push('/thx/login') } else if (error.message.includes('User has no password set yet')) { + this.$store.commit('email', this.form.email) this.$router.push('/reset-password/login') } loader.hide() diff --git a/frontend/src/pages/thx.spec.js b/frontend/src/pages/thx.spec.js index 9cb40e7e2..0ba19bf03 100644 --- a/frontend/src/pages/thx.spec.js +++ b/frontend/src/pages/thx.spec.js @@ -102,8 +102,8 @@ describe('Thx', () => { expect(wrapper.find('a.btn').text()).toBe('settings.password.reset') }) - it('links the redirect button to /password', () => { - expect(wrapper.find('a.btn').attributes('href')).toBe('/password') + it('links the redirect button to /forgot-password', () => { + expect(wrapper.find('a.btn').attributes('href')).toBe('/forgot-password') }) }) }) diff --git a/frontend/src/pages/thx.vue b/frontend/src/pages/thx.vue index a6a4edae1..5f267bd63 100644 --- a/frontend/src/pages/thx.vue +++ b/frontend/src/pages/thx.vue @@ -46,13 +46,13 @@ const textFields = { headline: 'site.thx.errorTitle', subtitle: 'site.thx.activateEmail', button: 'settings.password.reset', - linkTo: '/password', + linkTo: '/forgot-password', }, resetFailed: { headline: 'site.thx.errorTitle', subtitle: 'site.thx.resetPassword', button: 'settings.password.reset', - linkTo: '/password', + linkTo: '/forgot-password', }, } From 119f9e97347227ed275997b7f55f039995905032 Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 11 Mar 2022 10:50:55 +0100 Subject: [PATCH 11/35] Validates immediately so that the defaultValue is checked in the validator. --- frontend/src/components/Inputs/InputEmail.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frontend/src/components/Inputs/InputEmail.vue b/frontend/src/components/Inputs/InputEmail.vue index 32cc98e67..3118b1ae0 100644 --- a/frontend/src/components/Inputs/InputEmail.vue +++ b/frontend/src/components/Inputs/InputEmail.vue @@ -4,6 +4,7 @@ :rules="rules" :name="name" v-slot="{ errors, valid, validated, ariaInput, ariaMsg }" + immediate > From f206585b67ab8c2437ded136ebee0956d3bf470b Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 11 Mar 2022 10:58:17 +0100 Subject: [PATCH 12/35] Change default check of null to unexpected --- frontend/src/components/Inputs/InputEmail.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/Inputs/InputEmail.vue b/frontend/src/components/Inputs/InputEmail.vue index 3118b1ae0..8c7087bf3 100644 --- a/frontend/src/components/Inputs/InputEmail.vue +++ b/frontend/src/components/Inputs/InputEmail.vue @@ -43,7 +43,7 @@ export default { }, data() { return { - currentValue: this.defaultValue !== null ? this.defaultValue : '', + currentValue: this.defaultValue !== undefined ? this.defaultValue : '', } }, computed: { From 016f5ef65746c047e3849ae89e60e06036bf9f40 Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 11 Mar 2022 11:12:44 +0100 Subject: [PATCH 13/35] Set default unknown email. --- frontend/src/pages/ForgotPassword.spec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/pages/ForgotPassword.spec.js b/frontend/src/pages/ForgotPassword.spec.js index a547f9cc1..1815e2506 100644 --- a/frontend/src/pages/ForgotPassword.spec.js +++ b/frontend/src/pages/ForgotPassword.spec.js @@ -28,6 +28,11 @@ const createMockObject = (comingFrom) => { comingFrom, }, }, + $store: { + state: { + email: undefined, + }, + }, }, stubs, } From 08dd7c351853dd15cef34ef0660b78356e7971c1 Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 11 Mar 2022 12:54:08 +0100 Subject: [PATCH 14/35] Remove the defaultValue, stored email, etc... --- frontend/src/components/Inputs/InputEmail.vue | 9 +-------- frontend/src/pages/ForgotPassword.spec.js | 5 ----- frontend/src/pages/ForgotPassword.vue | 3 +-- frontend/src/pages/Login.vue | 2 -- 4 files changed, 2 insertions(+), 17 deletions(-) diff --git a/frontend/src/components/Inputs/InputEmail.vue b/frontend/src/components/Inputs/InputEmail.vue index 8c7087bf3..2aa153486 100644 --- a/frontend/src/components/Inputs/InputEmail.vue +++ b/frontend/src/components/Inputs/InputEmail.vue @@ -4,7 +4,6 @@ :rules="rules" :name="name" v-slot="{ errors, valid, validated, ariaInput, ariaMsg }" - immediate > diff --git a/frontend/src/pages/ForgotPassword.spec.js b/frontend/src/pages/ForgotPassword.spec.js index 1815e2506..a547f9cc1 100644 --- a/frontend/src/pages/ForgotPassword.spec.js +++ b/frontend/src/pages/ForgotPassword.spec.js @@ -28,11 +28,6 @@ const createMockObject = (comingFrom) => { comingFrom, }, }, - $store: { - state: { - email: undefined, - }, - }, }, stubs, } diff --git a/frontend/src/pages/ForgotPassword.vue b/frontend/src/pages/ForgotPassword.vue index 18ef22e69..eeb954a0c 100644 --- a/frontend/src/pages/ForgotPassword.vue +++ b/frontend/src/pages/ForgotPassword.vue @@ -19,7 +19,7 @@ - +
{{ $t(displaySetup.button) }} @@ -68,7 +68,6 @@ export default { email: '', }, displaySetup: {}, - defaultEmail: this.$store.state.email, } }, methods: { diff --git a/frontend/src/pages/Login.vue b/frontend/src/pages/Login.vue index 8546bf30b..57b97200d 100755 --- a/frontend/src/pages/Login.vue +++ b/frontend/src/pages/Login.vue @@ -107,10 +107,8 @@ export default { .catch((error) => { this.toastError(this.$t('error.no-account')) if (error.message.includes('User email not validated')) { - this.$store.commit('email', this.form.email) this.$router.push('/thx/login') } else if (error.message.includes('User has no password set yet')) { - this.$store.commit('email', this.form.email) this.$router.push('/reset-password/login') } loader.hide() From c3f7953bdb6145e418057f22515ac28a61afa0f9 Mon Sep 17 00:00:00 2001 From: elweyn Date: Mon, 14 Mar 2022 12:32:42 +0100 Subject: [PATCH 15/35] Create a query to check if OptIn code is not to old. --- backend/src/graphql/resolver/UserResolver.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 4d1454e86..3a70c46ee 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -486,8 +486,8 @@ export class UserResolver { // Code is only valid for 10minutes const timeElapsed = Date.now() - new Date(optInCode.updatedAt).getTime() - if (timeElapsed > 10 * 60 * 1000) { - throw new Error('Code is older than 10 minutes') + if (timeElapsed > parseInt(CONFIG.RESEND_TIME.toString()) * 60 * 1000) { + throw new Error('Code is older than ' + parseInt(CONFIG.RESEND_TIME.toString()) + ' minutes') } // load user @@ -558,6 +558,19 @@ export class UserResolver { return true } + @Authorized([RIGHTS.QUERY_OPT_IN]) + @Query(() => Boolean) + async queryOptIn(@Arg('optIn') optIn: string): Promise { + const optInCode = await LoginEmailOptIn.findOneOrFail({ verificationCode: optIn }) + console.log('optInCode', optInCode) + // Code is only valid for 10minutes + const timeElapsed = Date.now() - new Date(optInCode.updatedAt).getTime() + if (timeElapsed > parseInt(CONFIG.RESEND_TIME.toString()) * 60 * 1000) { + throw new Error('Code is older than ' + parseInt(CONFIG.RESEND_TIME.toString()) + ' minutes') + } + return true + } + @Authorized([RIGHTS.UPDATE_USER_INFOS]) @Mutation(() => Boolean) async updateUserInfos( From 4105191b04786455f86fd6cc7d7eb49afbd1b50a Mon Sep 17 00:00:00 2001 From: elweyn Date: Mon, 14 Mar 2022 12:33:10 +0100 Subject: [PATCH 16/35] RIGHTS for the query. --- backend/src/auth/INALIENABLE_RIGHTS.ts | 1 + backend/src/auth/RIGHTS.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/src/auth/INALIENABLE_RIGHTS.ts b/backend/src/auth/INALIENABLE_RIGHTS.ts index fa9ea2224..348cd5b20 100644 --- a/backend/src/auth/INALIENABLE_RIGHTS.ts +++ b/backend/src/auth/INALIENABLE_RIGHTS.ts @@ -8,4 +8,5 @@ export const INALIENABLE_RIGHTS = [ RIGHTS.SEND_RESET_PASSWORD_EMAIL, RIGHTS.SET_PASSWORD, RIGHTS.QUERY_TRANSACTION_LINK, + RIGHTS.QUERY_OPT_IN, ] diff --git a/backend/src/auth/RIGHTS.ts b/backend/src/auth/RIGHTS.ts index df4d4a2c1..64a412336 100644 --- a/backend/src/auth/RIGHTS.ts +++ b/backend/src/auth/RIGHTS.ts @@ -16,6 +16,7 @@ export enum RIGHTS { CREATE_USER = 'CREATE_USER', SEND_RESET_PASSWORD_EMAIL = 'SEND_RESET_PASSWORD_EMAIL', SET_PASSWORD = 'SET_PASSWORD', + QUERY_OPT_IN = 'QUERY_OPT_IN', UPDATE_USER_INFOS = 'UPDATE_USER_INFOS', HAS_ELOPAGE = 'HAS_ELOPAGE', CREATE_TRANSACTION_LINK = 'CREATE_TRANSACTION_LINK', From 21504e80055941d4e58862ec483450df1f51210c Mon Sep 17 00:00:00 2001 From: elweyn Date: Mon, 14 Mar 2022 12:33:57 +0100 Subject: [PATCH 17/35] Add query to the queries file, add method that checks if optin code is valid else push to password reset page. --- frontend/src/graphql/queries.js | 6 ++++++ frontend/src/pages/ResetPassword.vue | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 94a5e59f3..7d9498f43 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -127,3 +127,9 @@ export const communities = gql` } } ` + +export const queryOptIn = gql` + query($optIn: String!) { + queryOptIn(optIn: $optIn) + } +` diff --git a/frontend/src/pages/ResetPassword.vue b/frontend/src/pages/ResetPassword.vue index 830107a99..8d6bcca48 100644 --- a/frontend/src/pages/ResetPassword.vue +++ b/frontend/src/pages/ResetPassword.vue @@ -46,6 +46,7 @@