37 lines
885 B
TypeScript
37 lines
885 B
TypeScript
// STYLES
|
|
import "modern-normalize/modern-normalize.css";
|
|
import "@fontsource-variable/jetbrains-mono";
|
|
import "@/main.css";
|
|
|
|
// LIBRARIES
|
|
import $ from "jquery";
|
|
import { LoginResponse } from "./types/types";
|
|
|
|
if (localStorage.getItem("token")) {
|
|
location.replace("/");
|
|
}
|
|
|
|
$("#login").on("submit", async (e) => {
|
|
e.preventDefault();
|
|
const email = $("#email");
|
|
const password = $("#password");
|
|
|
|
fetch(`/api/v1/login`, {
|
|
method: "POST",
|
|
body: JSON.stringify({
|
|
email: email.val(),
|
|
password: password.val(),
|
|
}),
|
|
}).then(async (response) => {
|
|
if (response.ok) {
|
|
const loginResponse = (await response.json()) as LoginResponse;
|
|
if (loginResponse.token) {
|
|
localStorage.setItem("token", loginResponse.token);
|
|
location.replace("/");
|
|
} else {
|
|
console.error("Login failed", loginResponse);
|
|
}
|
|
}
|
|
});
|
|
});
|