From 5c69dacebaa9a330932dcbf54574093ec1b869f5 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sat, 26 Nov 2022 23:24:04 +0900 Subject: feat: Give general response if request is invalid --- code/app/src/lib/i18n/en/index.ts | 2 ++ code/app/src/lib/i18n/i18n-types.ts | 16 +++++++++ .../(public)/reset-password/[id]/+page.svelte | 39 +++++----------------- 3 files changed, 26 insertions(+), 31 deletions(-) (limited to 'code/app/src') diff --git a/code/app/src/lib/i18n/en/index.ts b/code/app/src/lib/i18n/en/index.ts index b9cdae7..fbf5423 100644 --- a/code/app/src/lib/i18n/en/index.ts +++ b/code/app/src/lib/i18n/en/index.ts @@ -46,6 +46,8 @@ const en: BaseTranslation = { expired: "Expired", requestHasExpired: "Your request has expired", requestANewReset: "Request a new reset", + invalidRequestTitle: "Your request is invalid", + invalidRequestMessage: "This could be due to it being expired, nonexsistent or something else", newPassword: "New password", requestSentMessage: "If we find your email address in our systems, you will receive an email with instructions on how to set a new password for your account.", requestAPasswordReset: "Request a password reset", diff --git a/code/app/src/lib/i18n/i18n-types.ts b/code/app/src/lib/i18n/i18n-types.ts index 870bf23..cf968d7 100644 --- a/code/app/src/lib/i18n/i18n-types.ts +++ b/code/app/src/lib/i18n/i18n-types.ts @@ -180,6 +180,14 @@ type RootTranslation = { * R​e​q​u​e​s​t​ ​a​ ​n​e​w​ ​r​e​s​e​t */ requestANewReset: string + /** + * Y​o​u​r​ ​r​e​q​u​e​s​t​ ​i​s​ ​i​n​v​a​l​i​d + */ + invalidRequestTitle: string + /** + * T​h​i​s​ ​c​o​u​l​d​ ​b​e​ ​d​u​e​ ​t​o​ ​i​t​ ​b​e​i​n​g​ ​e​x​p​i​r​e​d​,​ ​n​o​n​e​x​s​i​s​t​e​n​t​ ​o​r​ ​s​o​m​e​t​h​i​n​g​ ​e​l​s​e + */ + invalidRequestMessage: string /** * N​e​w​ ​p​a​s​s​w​o​r​d */ @@ -381,6 +389,14 @@ export type TranslationFunctions = { * Request a new reset */ requestANewReset: () => LocalizedString + /** + * Your request is invalid + */ + invalidRequestTitle: () => LocalizedString + /** + * This could be due to it being expired, nonexsistent or something else + */ + invalidRequestMessage: () => LocalizedString /** * New password */ diff --git a/code/app/src/routes/(main)/(public)/reset-password/[id]/+page.svelte b/code/app/src/routes/(main)/(public)/reset-password/[id]/+page.svelte index 2026764..ba59a8f 100644 --- a/code/app/src/routes/(main)/(public)/reset-password/[id]/+page.svelte +++ b/code/app/src/routes/(main)/(public)/reset-password/[id]/+page.svelte @@ -8,7 +8,7 @@ import { PasswordResetService } from "$lib/services/password-reset-service"; export let data: PageServerData; - const service = new PasswordResetService(); + const passwordResets = new PasswordResetService(); const formData = { newPassword: { value: "", @@ -16,15 +16,15 @@ }, }; - let errorState: undefined | "expired" | "404" | "unknown"; let finishedPreliminaryLoading = false; let loading = false; let canSubmit = true; + let requestIsInvalid = false; async function submitFormAsync() { if (!canSubmit) return; loading = true; - const request = await service.fulfill_request_async(data.resetRequestId, formData.newPassword.value); + const request = await passwordResets.fulfill_request_async(data.resetRequestId, formData.newPassword.value); if (request.isFulfilled) { goto("/sign-in?" + signInPageMessageQueryKey + "=" + SignInPageMessage.AFTER_PASSWORD_RESET); } else if (request.knownProblem) { @@ -33,20 +33,8 @@ } onMount(async () => { - errorState = undefined; - const isValidRequest = await service.request_is_valid_async(data.resetRequestId); - if (!isValidRequest.isValid) { - errorState = "unknown"; - canSubmit = false; - } - if (isValidRequest.status === 404) { - errorState = "404"; - canSubmit = false; - } - if (isValidRequest.ok && isValidRequest.data !== true) { - errorState = "expired"; - canSubmit = false; - } + const response = await passwordResets.request_is_valid_async(data.resetRequestId); + requestIsInvalid = !response.isValid; finishedPreliminaryLoading = true; }); @@ -68,29 +56,18 @@
- {#if errorState === "404"} - - {:else if errorState === "expired"} - - {:else if errorState === "unknown"} - + {#if requestIsInvalid} + {/if} - -
-- cgit v1.3