Added login and authentication

This commit is contained in:
2025-10-03 11:39:20 +02:00
parent 96388e5a50
commit c695d6c733
9 changed files with 434 additions and 13 deletions

23
src/lib/Auth.svelte.ts Normal file
View File

@@ -0,0 +1,23 @@
import axios from "axios";
import { env } from "$env/dynamic/public";
import UserSvelte from "./User.svelte";
import { goto } from "$app/navigation";
export async function isAuthenticated() {
if (location.pathname.startsWith("/login")) {
return true;
}
return axios
.get(`http://${env.PUBLIC_JEOPARDY_SERVER}/user/username`, { withCredentials: true })
.then((res) => {
if (res.status === 200) {
UserSvelte.username = res.data;
return true;
} else {
goto("/login");
}
})
.catch(() => {
goto("/login");
});
}

10
src/lib/User.svelte.ts Normal file
View File

@@ -0,0 +1,10 @@
let username: string = "";
export default {
get username(): string {
return username;
},
set username(uname: string) {
username = uname;
}
};

View File

@@ -14,7 +14,7 @@ let socket: WebSocket | undefined;
const connectAsHost = () => {
if (socket !== undefined) return;
socket = new WebSocket(
`${location.protocol === "https:" ? "wss" : "ws"}://${env.PUBLIC_JEOPARDY_SERVER ?? "127.0.0.1:12345"}`
`${location.protocol === "https:" ? "wss" : "ws"}://${env.PUBLIC_JEOPARDY_SERVER ?? "127.0.0.1:12345"}/websocket`
);
socket.addEventListener("open", onOpen(SocketConnectionType.HOST));
socket.addEventListener("message", onFirstMessage);
@@ -25,7 +25,7 @@ const connectAsHost = () => {
const connectAsDisplay = () => {
if (socket !== undefined) return;
socket = new WebSocket(
`${location.protocol === "https:" ? "wss" : "ws"}://${env.PUBLIC_JEOPARDY_SERVER ?? "127.0.0.1:12345"}`
`${location.protocol === "https:" ? "wss" : "ws"}://${env.PUBLIC_JEOPARDY_SERVER ?? "127.0.0.1:12345"}/websocket`
);
socket.addEventListener("open", onOpen(SocketConnectionType.DISPLAY));
socket.addEventListener("message", onFirstMessage);
@@ -43,10 +43,12 @@ const sendMessage = (obj: unknown) => {
};
function onOpen(type: SocketConnectionType) {
return (event: Event) => {
return async (event: Event) => {
console.log("Connection established");
console.log(event);
if (socket === undefined) return;
// somehow beeing to fast so have to wait some time
await new Promise((r) => setTimeout(r, 100));
socket.send(type.toString());
};
}