From d9e3d8d8f552e1338f79d194669db822acb21091 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 10 Nov 2022 15:56:49 -0800 Subject: voucher login redirect --- src/components/RegisterOrLogin.svelte | 8 ++++++-- src/hooks.server.js | 3 ++- src/routes/(app)/redeem/[redeemcode]/+server.js | 5 +++-- src/routes/(app)/send/voucher/+page.server.js | 2 +- src/routes/(app)/voucher/[code]/+page.svelte | 27 ++++++++++++++++--------- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/components/RegisterOrLogin.svelte b/src/components/RegisterOrLogin.svelte index bf2d2084..d7ae891a 100644 --- a/src/components/RegisterOrLogin.svelte +++ b/src/components/RegisterOrLogin.svelte @@ -7,9 +7,13 @@ import { focus } from '$lib/utils'; import { loginRedirect } from '$lib/store'; import { t } from '$lib/translations'; + import { page } from '$app/stores'; let token, tokenInput; let code = []; + let redirect; + + $: $page && (redirect = $loginRedirect) && ($loginRedirect = undefined); $: need2fa = form?.message === '2fa'; $: if (need2fa) tokenInput && tick().then(tokenInput.focusFirstInput); @@ -80,8 +84,8 @@ {/if}
- {#if $loginRedirect} - + {#if redirect} + {/if}
diff --git a/src/hooks.server.js b/src/hooks.server.js index 07ccb9f3..9492fcab 100644 --- a/src/hooks.server.js +++ b/src/hooks.server.js @@ -22,7 +22,8 @@ export async function handle({ event, resolve }) { } if (protectedRoutes.find((p) => pathname.match(p))) { - if (user?.username !== params.username) return Response.redirect(origin + '/login', 307); + if (!user || user.username !== params.username) + return Response.redirect(origin + '/login', 307); } const response = await resolve(event); diff --git a/src/routes/(app)/redeem/[redeemcode]/+server.js b/src/routes/(app)/redeem/[redeemcode]/+server.js index e306f18a..b99d9abe 100644 --- a/src/routes/(app)/redeem/[redeemcode]/+server.js +++ b/src/routes/(app)/redeem/[redeemcode]/+server.js @@ -1,8 +1,9 @@ -import { redirect } from '@sveltejs/kit'; -import { auth, post } from "$lib/utils"; +import { error, redirect } from '@sveltejs/kit'; +import { auth, post } from '$lib/utils'; export async function GET({ cookies, locals, params }) { let { user } = locals; + if (user) { await post('/redeem', params, auth(cookies)); throw redirect(307, `/${user.username}/transactions`); diff --git a/src/routes/(app)/send/voucher/+page.server.js b/src/routes/(app)/send/voucher/+page.server.js index 078d889e..d479c76a 100644 --- a/src/routes/(app)/send/voucher/+page.server.js +++ b/src/routes/(app)/send/voucher/+page.server.js @@ -11,6 +11,6 @@ export const actions = { return invalid(400, { message: e.message }); } - throw redirect(307, `/voucher/${p.redeemcode}`); + if (p) throw redirect(307, `/voucher/${p.redeemcode}`); } }; diff --git a/src/routes/(app)/voucher/[code]/+page.svelte b/src/routes/(app)/voucher/[code]/+page.svelte index 7c1fd205..2596cc18 100644 --- a/src/routes/(app)/voucher/[code]/+page.svelte +++ b/src/routes/(app)/voucher/[code]/+page.svelte @@ -1,13 +1,16 @@