From 4edd87668ec63d21b42b9e058beffdc1b48d76d6 Mon Sep 17 00:00:00 2001 From: core Date: Sun, 7 Jan 2024 02:30:58 -0500 Subject: [PATCH] client login/signup --- starkingdoms-client/login/index.html | 20 +++ starkingdoms-client/signup/index.html | 20 +++ .../src/components/ui/PasswordInput.svelte | 40 ++++++ starkingdoms-client/src/config.ts | 1 + starkingdoms-client/src/hub.ts | 4 +- starkingdoms-client/src/jwt.ts | 3 + starkingdoms-client/src/page_loaders/login.ts | 10 ++ .../src/page_loaders/signup.ts | 10 ++ starkingdoms-client/src/pages/Home.svelte | 17 ++- starkingdoms-client/src/pages/Login.svelte | 112 +++++++++++++++++ starkingdoms-client/src/pages/Signup.svelte | 114 ++++++++++++++++++ starkingdoms-client/vite.config.ts | 2 + 12 files changed, 349 insertions(+), 4 deletions(-) create mode 100644 starkingdoms-client/login/index.html create mode 100644 starkingdoms-client/signup/index.html create mode 100644 starkingdoms-client/src/components/ui/PasswordInput.svelte create mode 100644 starkingdoms-client/src/page_loaders/login.ts create mode 100644 starkingdoms-client/src/page_loaders/signup.ts create mode 100644 starkingdoms-client/src/pages/Login.svelte create mode 100644 starkingdoms-client/src/pages/Signup.svelte diff --git a/starkingdoms-client/login/index.html b/starkingdoms-client/login/index.html new file mode 100644 index 0000000000000000000000000000000000000000..eef60b7a45041cbc52ac99cc240b2ff400c9243a --- /dev/null +++ b/starkingdoms-client/login/index.html @@ -0,0 +1,20 @@ + + + + + + + + + StarKingdoms.IO + + +
+ +
+ + + + diff --git a/starkingdoms-client/signup/index.html b/starkingdoms-client/signup/index.html new file mode 100644 index 0000000000000000000000000000000000000000..dcfc5ef881ce25b99cdfe556f96c885042b587e8 --- /dev/null +++ b/starkingdoms-client/signup/index.html @@ -0,0 +1,20 @@ + + + + + + + + + StarKingdoms.IO + + +
+ +
+ + + + diff --git a/starkingdoms-client/src/components/ui/PasswordInput.svelte b/starkingdoms-client/src/components/ui/PasswordInput.svelte new file mode 100644 index 0000000000000000000000000000000000000000..c34adbc718f2927ae46a76a298d3a345d956e13d --- /dev/null +++ b/starkingdoms-client/src/components/ui/PasswordInput.svelte @@ -0,0 +1,40 @@ + + + + + diff --git a/starkingdoms-client/src/config.ts b/starkingdoms-client/src/config.ts index 641b03267927412a5afea11215a71dedaef29e1f..076124ff1b98533978f6646133c3cda987abc32b 100644 --- a/starkingdoms-client/src/config.ts +++ b/starkingdoms-client/src/config.ts @@ -7,6 +7,7 @@ const CONFIG_URL = "https://configuration.starkingdoms.io"; export interface Config { servers: { [id: string]: ConfigServer }; + backplane: string; } export interface ConfigServer { name: string; diff --git a/starkingdoms-client/src/hub.ts b/starkingdoms-client/src/hub.ts index f08291d2591da276510391ca445d18435bd229d1..8ca5025ca8942be1f3f4dde883c16a4d995244fa 100644 --- a/starkingdoms-client/src/hub.ts +++ b/starkingdoms-client/src/hub.ts @@ -247,7 +247,9 @@ export async function hub_connect( global.parts_map.set(id, part); logger(`spawn part`); - let part_sprite = PIXI.Sprite.from(part_texture_url(part.part_type)); + let part_sprite = PIXI.Sprite.from( + part_texture_url(part.part_type, p.part.flags.attached), + ); global.rendering!.part_sprite_map.set(id, part_sprite); global.rendering!.app.stage.addChild(part_sprite); } else if (packet.t == PacketType.DespawnPart) { diff --git a/starkingdoms-client/src/jwt.ts b/starkingdoms-client/src/jwt.ts index 785926845b887317808835a11b1d666d23de84bd..3f14a2b5b1e71fdbb7cf2a6277f7511e7b9ee8a1 100644 --- a/starkingdoms-client/src/jwt.ts +++ b/starkingdoms-client/src/jwt.ts @@ -16,6 +16,9 @@ export function parseJwt(token: string) { let base64Url = token.split(".")[1]; + if (base64Url === undefined) { + return undefined; + } let base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); let jsonPayload = decodeURIComponent( window diff --git a/starkingdoms-client/src/page_loaders/login.ts b/starkingdoms-client/src/page_loaders/login.ts new file mode 100644 index 0000000000000000000000000000000000000000..f8d832d55c8e5b6cb2492a44ab06bd97003769cc --- /dev/null +++ b/starkingdoms-client/src/page_loaders/login.ts @@ -0,0 +1,10 @@ +// DO NOT CHANGE THIS FILE! +// It's only purpose is to initialize the Svelte component tree. +// Actual code is in src/pages/Login.svelte. +import Login from "../pages/Login.svelte"; + +const page = new Login({ + target: document.getElementById("mount")!, +}); + +export default page; diff --git a/starkingdoms-client/src/page_loaders/signup.ts b/starkingdoms-client/src/page_loaders/signup.ts new file mode 100644 index 0000000000000000000000000000000000000000..7ac02ec2b2630333256cb744790dce10be39a911 --- /dev/null +++ b/starkingdoms-client/src/page_loaders/signup.ts @@ -0,0 +1,10 @@ +// DO NOT CHANGE THIS FILE! +// It's only purpose is to initialize the Svelte component tree. +// Actual code is in src/pages/Signup.svelte. +import Signup from "../pages/Signup.svelte"; + +const page = new Signup({ + target: document.getElementById("mount")!, +}); + +export default page; diff --git a/starkingdoms-client/src/pages/Home.svelte b/starkingdoms-client/src/pages/Home.svelte index 85b9af2574022159eb4b7ea45df37384c4fe56a2..0aaa9800e9dfd06815e881b5daed888c036d8ba3 100644 --- a/starkingdoms-client/src/pages/Home.svelte +++ b/starkingdoms-client/src/pages/Home.svelte @@ -28,8 +28,10 @@ if (window.localStorage.getItem("stk-token") != null) { let token = window.localStorage.getItem("stk-token")!; let token_parsed: any = parseJwt(token); - is_logged_in = true; - token_username = token_parsed.username; + if (token_parsed !== undefined) { + is_logged_in = true; + token_username = token_parsed.username; + } } const is_development = window.localStorage.getItem("stk-mode") === "debug"; @@ -94,7 +96,16 @@ {#if is_logged_in} - Logged in as {token_username}! Saves will be stored on the server. + Logged in as {token_username}! Saves will be stored in your browser + during the alpha, but will be stored on the server soon! + { + window.localStorage.removeItem("stk-token"); + window.location.reload(); + }}> + Logout + {:else} You are not logged in. Save data will be stored in your browser cache. diff --git a/starkingdoms-client/src/pages/Login.svelte b/starkingdoms-client/src/pages/Login.svelte new file mode 100644 index 0000000000000000000000000000000000000000..0ab723c3388ceaf6ef92db8720d7544a64de7736 --- /dev/null +++ b/starkingdoms-client/src/pages/Login.svelte @@ -0,0 +1,112 @@ + + + +
+ + + + + + + + + {#if error !== null} + + {/if} + + Create one! + Changed your mind? + Back to the launchpad + +
+ + + + StarKingdoms Client {APP_VERSION} ({COMMIT_HASH}) + + + Made with by the StarKingdoms team + diff --git a/starkingdoms-client/src/pages/Signup.svelte b/starkingdoms-client/src/pages/Signup.svelte new file mode 100644 index 0000000000000000000000000000000000000000..b351e604c4f7b821dcbaf373cc851bf6ee957cda --- /dev/null +++ b/starkingdoms-client/src/pages/Signup.svelte @@ -0,0 +1,114 @@ + + + +
+ + + + + + + + + {#if error !== null} + + {/if} + + + +
+ + + StarKingdoms Client {APP_VERSION} ({COMMIT_HASH}) + + + Made with by the StarKingdoms team + diff --git a/starkingdoms-client/vite.config.ts b/starkingdoms-client/vite.config.ts index 5c72559a4279eb00bdbcab01c8b8fa38ea8c595c..87c0f5cd4af09a5b07d4acdfbbb13163d5878462 100644 --- a/starkingdoms-client/vite.config.ts +++ b/starkingdoms-client/vite.config.ts @@ -23,6 +23,8 @@ export default defineConfig({ input: { main: resolve(__dirname, "index.html"), play: resolve(__dirname, "play/index.html"), + signup: resolve(__dirname, "signup/index.html"), + login: resolve(__dirname, "login/index.html"), }, }, },