From bdf1bf3d167495506d87603fedd52b3144733f8a Mon Sep 17 00:00:00 2001 From: Jonathan Bangert Date: Wed, 28 Feb 2024 22:20:04 +0100 Subject: [PATCH 1/2] Add basic login --- bun.lockb | Bin 191784 -> 190591 bytes package.json | 174 ++++++++++++++++----------------- src/authStore.ts | 3 + src/routes/signin/+page.svelte | 46 ++++++--- 4 files changed, 122 insertions(+), 101 deletions(-) create mode 100644 src/authStore.ts diff --git a/bun.lockb b/bun.lockb index b64753bbbb609a06ce9eebce926ab4df724ce3e5..e90e5a6f792d323842093aa900a06472f78e4129 100755 GIT binary patch delta 27710 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 Stha%;eU;f)cUZ?7B>q3ej(H6L delta 28367 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 - import { getContext } from 'svelte'; - import { Authorizer } from 'akademia-authorizer-svelte'; - import { goto } from '$app/navigation'; - import type { Readable } from 'svelte/store'; - import type { AuthorizerState } from 'akademia-authorizer-svelte/types'; + import Keycloak from 'keycloak-js'; + import { userInfo } from '../../authStore'; - let state: AuthorizerState; - const store = >getContext('authorizerContext'); + const keycloak = new Keycloak({ + url: 'http://localhost:8080/', + realm: 'akademia', + clientId: 'akademia-frontend', + }); + + let loggedIn = false; - store.subscribe((data: AuthorizerState) => { - state = data; - if (state.token) { - goto('/workspace/home'); + keycloak.init({ + onLoad: 'login-required', + }).then((authenticated) => { + console.log("tyest") + loggedIn = authenticated; + if (loggedIn) { + console.log('authenticated', authenticated); + loggedIn = true; + + keycloak.loadUserInfo().then((userInfoKc) => { + userInfo.set(userInfoKc); + }); } + }).catch((e) => { + console.error(e); }); + console.log('loggedIn', loggedIn); + @@ -24,9 +38,13 @@ From a7a471d965d8bc6c363b855165424a6d4169d742 Mon Sep 17 00:00:00 2001 From: Jonathan Bangert Date: Wed, 28 Feb 2024 23:12:59 +0100 Subject: [PATCH 2/2] Add types to login thing --- src/authStore.ts | 14 +++++++++++++- src/routes/signin/+page.svelte | 11 +++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/authStore.ts b/src/authStore.ts index 1c77e4fe..b439551c 100644 --- a/src/authStore.ts +++ b/src/authStore.ts @@ -1,3 +1,15 @@ +import type { Writable } from 'svelte/store'; import { writable } from 'svelte/store'; -export const userInfo = writable({}); \ No newline at end of file +export interface UserInfo { + email: string; + name: string; + username: string; + sub: string; + email_verified: boolean; + preferred_username: string; + given_name: string; + family_name: string; +} + +export const userInfo: Writable = writable(); diff --git a/src/routes/signin/+page.svelte b/src/routes/signin/+page.svelte index 957875f0..e65f4841 100644 --- a/src/routes/signin/+page.svelte +++ b/src/routes/signin/+page.svelte @@ -1,6 +1,6 @@