aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-07-28 21:22:25 -0700
committerAdam Soltys <[email protected]>2022-07-28 21:22:50 -0700
commit49e7185efd45add123e0dbfcab077772b5ff22f6 (patch)
treeb154c499b6c81c3cef0fa42d4c9f44c1f3444034 /src
parentbcb252eb0b52f64449dad295595fdaa5e80cb5dc (diff)
downloadcoinos-ui-49e7185efd45add123e0dbfcab077772b5ff22f6.tar.gz
coinos-ui-49e7185efd45add123e0dbfcab077772b5ff22f6.zip
save token in cookie
Diffstat (limited to 'src')
-rw-r--r--src/components/RegisterOrLogin.svelte4
-rw-r--r--src/hooks/index.js16
-rw-r--r--src/lib/socket.js1
-rw-r--r--src/lib/store.js18
-rw-r--r--src/routes/__layout.svelte4
-rw-r--r--src/routes/login.js21
6 files changed, 59 insertions, 5 deletions
diff --git a/src/components/RegisterOrLogin.svelte b/src/components/RegisterOrLogin.svelte
index 6cae8b5a..2334741d 100644
--- a/src/components/RegisterOrLogin.svelte
+++ b/src/components/RegisterOrLogin.svelte
@@ -7,7 +7,7 @@
export let page;
- let username, password;
+ let username = "bob", password = "pw";
let revealPassword = false;
@@ -20,6 +20,7 @@
let r = await post(url, { username, password });
if (!r.token) r = await post('/login', { username, password });
$token = r.token;
+ console.log("new token", r.token)
auth();
goto('/receive');
};
@@ -42,6 +43,7 @@
required
class="bg-primary p-4 rounded-2xl w-full"
bind:value={username}
+ autofocus
/>
</div>
diff --git a/src/hooks/index.js b/src/hooks/index.js
new file mode 100644
index 00000000..21e56052
--- /dev/null
+++ b/src/hooks/index.js
@@ -0,0 +1,16 @@
+import cookie from "cookie";
+export async function handle({ event, resolve }) {
+ let { request: { headers },
+ } = event;
+
+ const cookies = cookie.parse(headers.get("cookie") || "");
+ let { token } = cookies;
+ event.locals = { token };
+
+ return resolve(event);
+}
+
+
+export const getSession = ({ locals: { token } }) => {
+ return { token };
+};
diff --git a/src/lib/socket.js b/src/lib/socket.js
index 087addf9..9d0c472e 100644
--- a/src/lib/socket.js
+++ b/src/lib/socket.js
@@ -24,7 +24,6 @@ export const messages = (data) => ({
connected: auth,
login() {
- console.log('OY', data);
user.set(data);
}
});
diff --git a/src/lib/store.js b/src/lib/store.js
index 7b510748..62232f9d 100644
--- a/src/lib/store.js
+++ b/src/lib/store.js
@@ -1,6 +1,20 @@
-import { writable } from 'svelte/store';
+import { get, writable } from 'svelte/store';
+import { browser } from '$app/env';
+
+const persisted = (k, i) => {
+ let s = writable(
+ browser && sessionStorage.getItem(k) && sessionStorage.getItem(k) !== 'undefined'
+ ? JSON.parse(sessionStorage.getItem(k))
+ : i
+ );
+
+ s.subscribe((v) => browser && sessionStorage.setItem(k, JSON.stringify(v))
+ );
+
+ return s;
+};
export const rate = writable();
export const user = writable();
export const invoiceAmount = writable();
-export const token = writable();
+export const token = persisted('token');
diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte
index f5576edd..1af9679a 100644
--- a/src/routes/__layout.svelte
+++ b/src/routes/__layout.svelte
@@ -2,7 +2,11 @@
import '../app.css';
import { onMount } from 'svelte';
import { connect } from '$lib/socket';
+ import { token } from "$lib/store";
+ import { session } from "$app/stores";
+ import { browser } from "$app/env";
+ browser && ($token ||= $session.token);
onMount(connect);
</script>
diff --git a/src/routes/login.js b/src/routes/login.js
index 771de9e1..db1fbb6c 100644
--- a/src/routes/login.js
+++ b/src/routes/login.js
@@ -1,5 +1,24 @@
import { post } from '$lib/utils';
+import cookie from 'cookie';
+
+let maxAge = 30 * 24 * 60 * 60;
export async function POST({ request }) {
- return { body: await post('/login', await request.json()) };
+ let body = await post('/login', await request.json());
+
+ let expires = new Date();
+ expires.setSeconds(expires.getSeconds() + maxAge);
+
+ return {
+ body,
+ headers: {
+ 'set-cookie': cookie.serialize('token', body.token, {
+ httpOnly: true,
+ maxAge,
+ sameSite: 'lax',
+ path: '/',
+ expires
+ })
+ }
+ };
}