aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/+layout.server.js17
-rw-r--r--src/routes/+layout.svelte8
-rw-r--r--src/routes/[username]/+page.server.js2
-rw-r--r--src/routes/[username]/+page.svelte7
-rw-r--r--src/routes/[username]/dashboard/+page.svelte2
-rw-r--r--src/routes/login/+page.server.js21
-rw-r--r--src/routes/logout/+page.server.js2
-rw-r--r--src/routes/register/+page.server.js19
8 files changed, 43 insertions, 35 deletions
diff --git a/src/routes/+layout.server.js b/src/routes/+layout.server.js
new file mode 100644
index 00000000..e05380a7
--- /dev/null
+++ b/src/routes/+layout.server.js
@@ -0,0 +1,17 @@
+import cookie from 'cookie';
+import { protectedRoutes } from '$lib/utils';
+import { get } from '$lib/utils';
+
+export async function load({ request, setHeaders, url, params }) {
+ let { token } = cookie.parse(request.headers.get('cookie') || '');
+ let user;
+
+ if (token) {
+ user = await get('/me', { accept: 'application/json', authorization: `Bearer ${token}` });
+ if (protectedRoutes.find((p) => url.pathname.match(p))) {
+ if (user.username !== params.username) throw new Error('user not found');
+ }
+ }
+
+ return { user, token };
+}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 8ae80e6c..f2624613 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -6,19 +6,20 @@
import { onMount } from 'svelte';
import { connect } from '$lib/socket';
import { user, token } from '$lib/store';
- import { page, session } from '$app/stores';
+ import { page } from '$app/stores';
import { browser } from '$app/env';
import { goto } from '$app/navigation';
import { LoadingSplash } from '$comp';
import { warning, protectedRoutes } from '$lib/utils';
import { _ } from 'svelte-i18n';
- browser && ($token ||= $session.token);
+ $: $token = data.token
+
+ export let data;
let ready = false;
onMount(() => {
- // get locale from local storage
let localStorageLocale = localStorage.getItem('svelte-i18n-locale');
if (localStorageLocale) locale.set(localStorageLocale);
@@ -27,6 +28,7 @@
});
if (protectedRoutes.find((p) => $page.url.pathname.match(p))) {
+ console.log("TOKEN", $token)
if (!$token) {
goto('/login');
warning($_('error.signIn'));
diff --git a/src/routes/[username]/+page.server.js b/src/routes/[username]/+page.server.js
index 2e52c431..e31a28c0 100644
--- a/src/routes/[username]/+page.server.js
+++ b/src/routes/[username]/+page.server.js
@@ -10,5 +10,7 @@ export async function load({ params }) {
body = {};
}
+ console.log("BODY", body)
+
return body;
}
diff --git a/src/routes/[username]/+page.svelte b/src/routes/[username]/+page.svelte
index f22bd218..6d93ba23 100644
--- a/src/routes/[username]/+page.svelte
+++ b/src/routes/[username]/+page.svelte
@@ -6,9 +6,8 @@
import { copy } from '$lib/utils';
import { _ } from 'svelte-i18n';
export let data;
- $: ({ username } = data);
- let lightningAddress = `${username}@coinos.io`;
+ let lightningAddress = `${data?.username}@coinos.io`;
onMount(async () => {
if (browser) {
@@ -36,13 +35,13 @@
let followed = false;
</script>
-{#if username}
+{#if data?.username}
<AppHeader avatarPosition="left-[calc(15vw-48px)]" />
<div class="flex xl:block justify-center items-center my-20 px-3">
<div class="space-y-10 xl:space-y-0">
<div class="xl:ml-[calc(15vw-48px)] space-y-2 w-full md:w-72">
- <h1 class="text-3xl font-bold">{username}</h1>
+ <h1 class="text-3xl font-bold">{data.username}</h1>
<p class="text-secondary">{$_('user.addressGoesHere')}</p>
diff --git a/src/routes/[username]/dashboard/+page.svelte b/src/routes/[username]/dashboard/+page.svelte
index e358c52e..3553661a 100644
--- a/src/routes/[username]/dashboard/+page.svelte
+++ b/src/routes/[username]/dashboard/+page.svelte
@@ -83,7 +83,7 @@
<span class="text-secondary text-xl block">{accountBalanceSats} SAT</span>
<button class="rounded-full border py-2 font-bold w-28 mt-4" on:click={toggle}
- >$_('user.dashboard.withdraw')</button
+ >{$_('user.dashboard.withdraw')}</button
>
<p class="text-secondary my-2">{$_('user.dashboard.conversionFeeWarning')}</p>
{:else}
diff --git a/src/routes/login/+page.server.js b/src/routes/login/+page.server.js
index 2dfb962d..b788af07 100644
--- a/src/routes/login/+page.server.js
+++ b/src/routes/login/+page.server.js
@@ -1,21 +1,8 @@
-import { post } from '$lib/utils';
-import cookie from 'cookie';
-
-let maxAge = 30 * 24 * 60 * 60;
+import { login, post } from '$lib/utils';
export async function POST({ setHeaders, request }) {
- let body = await post('/login', await request.json());
-
- let expires = new Date();
- expires.setSeconds(expires.getSeconds() + maxAge);
+ let user = Object.fromEntries(await request.formData());
+ await login(user, setHeaders);
- setHeaders({
- 'set-cookie': cookie.serialize('token', body.token, {
- httpOnly: true,
- maxAge,
- sameSite: 'lax',
- path: '/',
- expires
- })
- });
+ return { location: `/${data.username}/dashboard` };
}
diff --git a/src/routes/logout/+page.server.js b/src/routes/logout/+page.server.js
index 40ddcfff..3eae005f 100644
--- a/src/routes/logout/+page.server.js
+++ b/src/routes/logout/+page.server.js
@@ -7,7 +7,7 @@ const opts = {
path: '/'
};
-export async function load({ request: { headers } }) {
+export async function load({ setHeaders }) {
setHeaders({
'set-cookie': [
cookie.serialize('token', '', {
diff --git a/src/routes/register/+page.server.js b/src/routes/register/+page.server.js
index 4121b671..dc7dda33 100644
--- a/src/routes/register/+page.server.js
+++ b/src/routes/register/+page.server.js
@@ -1,11 +1,12 @@
-import { post } from '$lib/utils';
-import { error } from '@sveltejs/kit';
+import cookie from 'cookie';
+import { post, login } from '$lib/utils';
-export async function POST({ request }) {
- try {
- let user = await request.json();
- await post('/register', { user });
- } catch (e) {
- throw error(500, e.message);
- }
+let maxAge = 30 * 24 * 60 * 60;
+
+export async function POST({ request, setHeaders }) {
+ let user = Object.fromEntries(await request.formData());
+ await post('/register', { user });
+ await login(user, setHeaders);
+
+ return { location: `/${user.username}/dashboard` };
}