aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-11-10 15:56:49 -0800
committerAdam Soltys <[email protected]>2022-11-10 15:59:57 -0800
commitd9e3d8d8f552e1338f79d194669db822acb21091 (patch)
tree68979426d985759dcf10a8016bf72c3477bb36f8 /src
parent75b459dc0d536c0427bd54116d221fddc220dc68 (diff)
downloadcoinos-ui-d9e3d8d8f552e1338f79d194669db822acb21091.tar.gz
coinos-ui-d9e3d8d8f552e1338f79d194669db822acb21091.zip
voucher login redirect
Diffstat (limited to 'src')
-rw-r--r--src/components/RegisterOrLogin.svelte8
-rw-r--r--src/hooks.server.js3
-rw-r--r--src/routes/(app)/redeem/[redeemcode]/+server.js5
-rw-r--r--src/routes/(app)/send/voucher/+page.server.js2
-rw-r--r--src/routes/(app)/voucher/[code]/+page.svelte27
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>