/* Auth process: User Requests Key => Server emails key to user => user opens link to auth.html => website POSTs key to server => Server checks validity => Server responds with the users auth key => auth.js adds this to localStorage */ const cmd = document.getElementById("cmd") // Assign element to const init(); // Run init function async function sendHome(){ await delay(2000); location.replace('/') } async function cmdOut(message) { html = "

" + message + "

" cmd.insertAdjacentHTML("beforeend", html) } async function registerKey(key) { // Posts key to server and listens for response. const url = `${window.location.origin}/api/v1/register/register`; const res = await fetch(url, { // The response will contain the UUID which will be registered method: "POST", headers: { "Content-Type": "application/json" }, redirect: "follow", body: JSON.stringify({uuid: key}) }) const data = await res.json(); return res.status === 201 ? (localStorage.setItem("uuid", data.api_key), true) : false; } async function checkAuth(key) { const url = `${window.location.origin}/api/v1/auth/test`; const res = await fetch(url, { method: "GET", redirect: "follow", headers: { "uuid": key } }) return res.status === 200 ? true : false } async function init(){ // Reads registration key from query, and calls registerKey(key) cmdOut("Reading authorisation code"); const key = await getQuery("key"); cmdOut("Requesting API Key from server"); if (!await registerKey(key)) { cmdOut("Failed to register key") hideLoading() return } showLoading() if (! await checkAuth(localStorage.getItem("uuid"))) { cmdOut("Authentication Check failed") cmdOut("Please try again") hideLoading() await delay(2000) location.replace("./") } hideLoading(); cmdOut("Authentication succesful") await delay(2000) location.replace("./") }