diff options
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/+layout.server.js | 17 | ||||
| -rw-r--r-- | src/routes/+layout.svelte | 8 | ||||
| -rw-r--r-- | src/routes/[username]/+page.server.js | 2 | ||||
| -rw-r--r-- | src/routes/[username]/+page.svelte | 7 | ||||
| -rw-r--r-- | src/routes/[username]/dashboard/+page.svelte | 2 | ||||
| -rw-r--r-- | src/routes/login/+page.server.js | 21 | ||||
| -rw-r--r-- | src/routes/logout/+page.server.js | 2 | ||||
| -rw-r--r-- | src/routes/register/+page.server.js | 19 |
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` }; } |
