2023-07-21 20:52:06 +01:00
|
|
|
if (localStorage.getItem("DONOTSHARE-secretkey") !== null) {
|
|
|
|
window.location.replace("/app")
|
2023-11-03 20:24:40 +00:00
|
|
|
document.body.innerHTML = "Redirecting..."
|
2023-07-21 20:52:06 +01:00
|
|
|
throw new Error();
|
|
|
|
}
|
|
|
|
if (localStorage.getItem("DONOTSHARE-password") !== null) {
|
|
|
|
window.location.replace("/app")
|
2023-11-03 20:24:40 +00:00
|
|
|
document.body.innerHTML = "Redirecting..."
|
2023-07-21 20:52:06 +01:00
|
|
|
throw new Error();
|
|
|
|
}
|
|
|
|
|
|
|
|
let usernameBox = document.getElementById("usernameBox")
|
|
|
|
let passwordBox = document.getElementById("passwordBox")
|
|
|
|
let statusBox = document.getElementById("statusBox")
|
|
|
|
let signupButton = document.getElementById("signupButton")
|
2023-10-13 19:00:34 +01:00
|
|
|
let inputNameBox = document.getElementById("inputNameBox")
|
|
|
|
let backButton = document.getElementById("backButton")
|
|
|
|
|
|
|
|
usernameBox.classList.remove("hidden")
|
2023-11-03 20:24:40 +00:00
|
|
|
inputNameBox.innerText = "Username:"
|
2023-10-13 19:00:34 +01:00
|
|
|
|
|
|
|
let currentInputType = 0
|
|
|
|
|
|
|
|
function showInput(inputType) {
|
|
|
|
if (inputType == 0) {
|
|
|
|
usernameBox.classList.remove("hidden")
|
|
|
|
passwordBox.classList.add("hidden")
|
|
|
|
backButton.classList.add("hidden")
|
2023-11-03 20:24:40 +00:00
|
|
|
inputNameBox.innerText = "Username:"
|
|
|
|
statusBox.innerText = "Login to your PageBurger account!"
|
2023-10-13 19:00:34 +01:00
|
|
|
currentInputType = 0
|
|
|
|
} else if (inputType == 1) {
|
|
|
|
usernameBox.classList.add("hidden")
|
|
|
|
passwordBox.classList.remove("hidden")
|
|
|
|
backButton.classList.remove("hidden")
|
2023-11-03 20:24:40 +00:00
|
|
|
inputNameBox.innerText = "Password:"
|
2023-10-13 19:00:34 +01:00
|
|
|
currentInputType = 1
|
|
|
|
} else if (inputType == 2) {
|
|
|
|
usernameBox.classList.add("hidden")
|
|
|
|
passwordBox.classList.add("hidden")
|
|
|
|
signupButton.classList.add("hidden")
|
|
|
|
backButton.classList.add("hidden")
|
|
|
|
inputNameBox.classList.add("hidden")
|
2023-11-03 20:24:40 +00:00
|
|
|
inputNameBox.innerText = "Password:"
|
2023-10-13 19:00:34 +01:00
|
|
|
currentInputType = 2
|
|
|
|
}
|
|
|
|
}
|
2023-07-21 20:52:06 +01:00
|
|
|
|
|
|
|
function showElements(yesorno) {
|
|
|
|
if (!yesorno) {
|
|
|
|
usernameBox.classList.add("hidden")
|
|
|
|
passwordBox.classList.add("hidden")
|
|
|
|
signupButton.classList.add("hidden")
|
2023-10-13 19:00:34 +01:00
|
|
|
backButton.classList.add("hidden")
|
|
|
|
inputNameBox.classList.add("hidden")
|
|
|
|
showInput(currentInputType)
|
2023-07-21 20:52:06 +01:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
usernameBox.classList.remove("hidden")
|
|
|
|
passwordBox.classList.remove("hidden")
|
|
|
|
signupButton.classList.remove("hidden")
|
2023-10-13 19:00:34 +01:00
|
|
|
backButton.classList.remove("hidden")
|
|
|
|
inputNameBox.classList.remove("hidden")
|
|
|
|
showInput(currentInputType)
|
2023-07-21 20:52:06 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
signupButton.addEventListener("click", (event) => {
|
2023-10-13 19:00:34 +01:00
|
|
|
if (passwordBox.classList.contains("hidden")) {
|
|
|
|
if (usernameBox.value == "") {
|
2023-11-03 20:24:40 +00:00
|
|
|
statusBox.innerText = "A username is required!"
|
2023-07-22 17:15:59 +01:00
|
|
|
return
|
2023-10-13 19:00:34 +01:00
|
|
|
} else {
|
2023-11-03 20:24:40 +00:00
|
|
|
statusBox.innerText = "Welcome back, " + usernameBox.value + "!"
|
2023-07-22 17:15:59 +01:00
|
|
|
}
|
2023-10-13 19:00:34 +01:00
|
|
|
showInput(1)
|
|
|
|
} else {
|
|
|
|
async function doStuff() {
|
|
|
|
let username = usernameBox.value
|
|
|
|
let password = passwordBox.value
|
2023-07-22 17:15:59 +01:00
|
|
|
|
2023-10-13 19:00:34 +01:00
|
|
|
if (password == "") {
|
2023-11-03 20:24:40 +00:00
|
|
|
statusBox.innerText = "A password is required!"
|
2023-10-13 19:00:34 +01:00
|
|
|
return
|
|
|
|
}
|
2023-07-21 20:52:06 +01:00
|
|
|
|
2023-10-13 19:00:34 +01:00
|
|
|
showInput(2)
|
|
|
|
showElements(true)
|
2023-11-03 20:24:40 +00:00
|
|
|
statusBox.innerText = "Signing in..."
|
2023-07-21 20:52:06 +01:00
|
|
|
|
2024-02-25 18:25:31 +00:00
|
|
|
async function hashpassold(pass) {
|
2023-10-13 19:00:34 +01:00
|
|
|
const key = await hashwasm.argon2id({
|
|
|
|
password: pass,
|
|
|
|
salt: await hashwasm.sha512(pass),
|
|
|
|
parallelism: 1,
|
|
|
|
iterations: 256,
|
|
|
|
memorySize: 512,
|
|
|
|
hashLength: 32,
|
|
|
|
outputType: "encoded"
|
|
|
|
});
|
|
|
|
return key
|
|
|
|
};
|
2023-07-21 20:52:06 +01:00
|
|
|
|
2024-02-25 18:25:31 +00:00
|
|
|
async function hashpass(pass) {
|
|
|
|
const key = await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(await hashwasm.sha3(pass))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
|
|
|
|
return key
|
|
|
|
};
|
|
|
|
|
2023-10-13 19:00:34 +01:00
|
|
|
fetch("/api/login", {
|
|
|
|
method: "POST",
|
|
|
|
body: JSON.stringify({
|
|
|
|
username: username,
|
|
|
|
password: await hashpass(password)
|
|
|
|
}),
|
|
|
|
headers: {
|
|
|
|
"Content-type": "application/json; charset=UTF-8"
|
2023-07-21 20:52:06 +01:00
|
|
|
}
|
2023-10-13 19:00:34 +01:00
|
|
|
})
|
|
|
|
.then((response) => response)
|
|
|
|
.then((response) => {
|
|
|
|
async function doStuff() {
|
|
|
|
let responseData = await response.json()
|
|
|
|
if (response.status == 200) {
|
|
|
|
localStorage.setItem("DONOTSHARE-secretkey", responseData["key"])
|
|
|
|
localStorage.setItem("DONOTSHARE-password", await hashwasm.sha512(password))
|
|
|
|
|
|
|
|
window.location.href = "/app"
|
|
|
|
}
|
|
|
|
else if (response.status == 401) {
|
2024-02-25 18:25:31 +00:00
|
|
|
fetch("/api/login", {
|
|
|
|
method: "POST",
|
|
|
|
body: JSON.stringify({
|
|
|
|
username: username,
|
|
|
|
password: await hashpassold(password)
|
|
|
|
}),
|
|
|
|
headers: {
|
|
|
|
"Content-type": "application/json; charset=UTF-8"
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.then((response) => response)
|
|
|
|
.then((response) => {
|
|
|
|
async function doStuff() {
|
|
|
|
let responseData = await response.json()
|
|
|
|
if (response.status == 200) {
|
|
|
|
localStorage.setItem("DONOTSHARE-secretkey", responseData["key"])
|
|
|
|
localStorage.setItem("DONOTSHARE-password", await hashwasm.sha512(password))
|
|
|
|
|
|
|
|
window.location.href = "/app"
|
|
|
|
}
|
|
|
|
else if (response.status == 401) {
|
|
|
|
|
|
|
|
statusBox.innerText = "Wrong username or password..."
|
|
|
|
showInput(1)
|
|
|
|
showElements(true)
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
statusBox.innerText = "Something went wrong! (error code: " + response.status + ")"
|
|
|
|
showInput(1)
|
|
|
|
showElements(true)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
doStuff()
|
|
|
|
});
|
2023-10-13 19:00:34 +01:00
|
|
|
}
|
|
|
|
else {
|
2023-11-03 20:24:40 +00:00
|
|
|
statusBox.innerText = "Something went wrong! (error code: " + response.status + ")"
|
2023-10-13 19:00:34 +01:00
|
|
|
showInput(1)
|
|
|
|
showElements(true)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
doStuff()
|
|
|
|
});
|
|
|
|
}
|
|
|
|
doStuff()
|
2023-07-21 20:52:06 +01:00
|
|
|
}
|
2023-10-13 19:00:34 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
backButton.addEventListener("click", (event) => {
|
|
|
|
showInput(0)
|
|
|
|
});
|
|
|
|
|
2023-11-03 20:24:40 +00:00
|
|
|
showInput(0)
|