diff options
| author | Adam Soltys <[email protected]> | 2022-11-10 15:56:49 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-11-10 15:59:57 -0800 |
| commit | d9e3d8d8f552e1338f79d194669db822acb21091 (patch) | |
| tree | 68979426d985759dcf10a8016bf72c3477bb36f8 /src | |
| parent | 75b459dc0d536c0427bd54116d221fddc220dc68 (diff) | |
| download | coinos-ui-d9e3d8d8f552e1338f79d194669db822acb21091.tar.gz coinos-ui-d9e3d8d8f552e1338f79d194669db822acb21091.zip | |
voucher login redirect
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/RegisterOrLogin.svelte | 8 | ||||
| -rw-r--r-- | src/hooks.server.js | 3 | ||||
| -rw-r--r-- | src/routes/(app)/redeem/[redeemcode]/+server.js | 5 | ||||
| -rw-r--r-- | src/routes/(app)/send/voucher/+page.server.js | 2 | ||||
| -rw-r--r-- | 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} <form class="space-y-5" {action} method="POST" use:enhance> - {#if $loginRedirect} - <input type="hidden" name="loginRedirect" value={$loginRedirect} /> + {#if redirect} + <input type="hidden" name="loginRedirect" value={redirect} /> {/if} <div> 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 @@ <script> + import { onMount } from 'svelte'; + import { page } from '$app/stores'; import { Icon } from '$comp'; import { toast } from '@zerodevx/svelte-toast'; import { t } from '$lib/translations'; import { copy, f, s, sat, sats } from '$lib/utils'; - import { selectedRate } from '$lib/store'; + import { loginRedirect, selectedRate } from '$lib/store'; export let data; let { src } = data; $: ({ amount, currency, rate, redeemed, redeemcode, user } = data.payment); + onMount(() => ($loginRedirect = $page.url.pathname)); toast.pop(0); @@ -25,7 +28,12 @@ <div class="shadow-xl rounded-3xl px-10 pt-5 pb-10 space-y-5 w-full mx-5"> <h1 class="text-3xl md:text-4xl font-bold">Voucher</h1> - <img {src} class="w-[300px] mx-auto cursor-pointer" on:click={() => copy(redeemcode)} alt="Redeem Code" /> + <img + {src} + class="w-[300px] mx-auto cursor-pointer" + on:click={() => copy(redeemcode)} + alt="Redeem Code" + /> <div> <h2 class="text-2xl md:text-3xl font-semibold"> {f(amountFiat, currency)} @@ -34,15 +42,16 @@ {sat(amount)} </h3> </div> - <div class="mx-auto my-auto flex gap-2 justify-center"> - <a href={`/redeem/${redeemcode}`}> - <button class="text-lg rounded-full border py-3 px-7 font-bold hover:opacity-80" class:bg-gray-200={redeemed} disabled={redeemed}> - {redeemed ? 'Redeemed' : 'Redeem'} + <div class="mx-auto my-auto flex gap-2 justify-center" data-sveltekit-prefetch="off"> + <a href={`/redeem/${redeemcode}`}> + <button + class="text-lg rounded-full border py-3 px-7 font-bold hover:opacity-80" + class:bg-gray-200={redeemed} + disabled={redeemed} + > + {redeemed ? 'Redeemed' : 'Redeem'} </button> </a> - <!-- <button class="text-lg rounded-full border py-3 px-7 font-bold hover:opacity-80"> --> - <!-- Top up --> - <!-- </button> --> </div> </div> </div> |
