forked from Ailur/burgernotes-server
190 lines
7.3 KiB
JavaScript
190 lines
7.3 KiB
JavaScript
if (localStorage.getItem("DONOTSHARE-secretkey") !== null) {
|
|
window.location.replace("../app/index.html")
|
|
document.body.innerHTML = "Redirecting..."
|
|
throw new Error();
|
|
}
|
|
if (localStorage.getItem("DONOTSHARE-password") !== null) {
|
|
window.location.replace("../app/index.html")
|
|
document.body.innerHTML = "Redirecting..."
|
|
throw new Error();
|
|
}
|
|
|
|
let usernameBox = document.getElementById("usernameBox")
|
|
let passwordBox = document.getElementById("passwordBox")
|
|
let statusBox = document.getElementById("statusBox")
|
|
let signupButton = document.getElementById("signupButton")
|
|
let inputNameBox = document.getElementById("inputNameBox")
|
|
let backButton = document.getElementById("backButton")
|
|
|
|
usernameBox.classList.remove("hidden")
|
|
inputNameBox.innerText = "Username:"
|
|
|
|
let currentInputType = 0
|
|
|
|
function showInput(inputType) {
|
|
if (inputType == 0) {
|
|
usernameBox.classList.remove("hidden")
|
|
passwordBox.classList.add("hidden")
|
|
backButton.classList.add("hidden")
|
|
inputNameBox.innerText = "Username:"
|
|
statusBox.innerText = "Login to your Burgernotes account!"
|
|
currentInputType = 0
|
|
} else if (inputType == 1) {
|
|
usernameBox.classList.add("hidden")
|
|
passwordBox.classList.remove("hidden")
|
|
backButton.classList.remove("hidden")
|
|
inputNameBox.innerText = "Password:"
|
|
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")
|
|
inputNameBox.innerText = "Password:"
|
|
currentInputType = 2
|
|
}
|
|
}
|
|
|
|
function showElements(yesorno) {
|
|
if (!yesorno) {
|
|
usernameBox.classList.add("hidden")
|
|
passwordBox.classList.add("hidden")
|
|
signupButton.classList.add("hidden")
|
|
backButton.classList.add("hidden")
|
|
inputNameBox.classList.add("hidden")
|
|
showInput(currentInputType)
|
|
}
|
|
else {
|
|
usernameBox.classList.remove("hidden")
|
|
passwordBox.classList.remove("hidden")
|
|
signupButton.classList.remove("hidden")
|
|
backButton.classList.remove("hidden")
|
|
inputNameBox.classList.remove("hidden")
|
|
showInput(currentInputType)
|
|
}
|
|
}
|
|
|
|
signupButton.addEventListener("click", (event) => {
|
|
if (passwordBox.classList.contains("hidden")) {
|
|
if (usernameBox.value == "") {
|
|
statusBox.innerText = "A username is required!"
|
|
return
|
|
} else {
|
|
statusBox.innerText = "Welcome back, " + usernameBox.value + "!"
|
|
}
|
|
showInput(1)
|
|
} else {
|
|
async function doStuff() {
|
|
let username = usernameBox.value
|
|
let password = passwordBox.value
|
|
|
|
if (password == "") {
|
|
statusBox.innerText = "A password is required!"
|
|
return
|
|
}
|
|
|
|
showInput(2)
|
|
showElements(true)
|
|
statusBox.innerText = "Signing in..."
|
|
|
|
async function hashpassold(pass) {
|
|
const key = await hashwasm.argon2id({
|
|
password: pass,
|
|
salt: await hashwasm.sha512(pass),
|
|
parallelism: 1,
|
|
iterations: 256,
|
|
memorySize: 512,
|
|
hashLength: 32,
|
|
outputType: "encoded"
|
|
});
|
|
return key
|
|
};
|
|
|
|
async function hashpass(pass) {
|
|
let key = pass
|
|
for (let i = 0; i < 128; i++) {
|
|
key = await hashwasm.sha3(key)
|
|
}
|
|
return key
|
|
};
|
|
|
|
fetch("https://notes.hectabit.org/api/login", {
|
|
method: "POST",
|
|
body: JSON.stringify({
|
|
username: username,
|
|
password: await hashpass(password),
|
|
passwordchange: "no",
|
|
newpass: "null"
|
|
}),
|
|
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/index.html"
|
|
}
|
|
else if (response.status == 401) {
|
|
console.log("Trying oldhash")
|
|
fetch("https://notes.hectabit.org/api/login", {
|
|
method: "POST",
|
|
body: JSON.stringify({
|
|
username: username,
|
|
password: await hashpassold(password),
|
|
passwordchange: "yes",
|
|
newpass: await hashpass(password)
|
|
}),
|
|
headers: {
|
|
"Content-Type": "application/json; charset=UTF-8"
|
|
}
|
|
})
|
|
.then((response) => response)
|
|
.then((response) => {
|
|
async function doStuff2() {
|
|
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/index.html"
|
|
}
|
|
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)
|
|
}
|
|
}
|
|
doStuff2()
|
|
});
|
|
}
|
|
else {
|
|
statusBox.innerText = "Something went wrong! (error code: " + response.status + ")"
|
|
showInput(1)
|
|
showElements(true)
|
|
}
|
|
}
|
|
doStuff()
|
|
});
|
|
}
|
|
doStuff()
|
|
}
|
|
});
|
|
|
|
backButton.addEventListener("click", (event) => {
|
|
showInput(0)
|
|
});
|
|
|
|
showInput(0)
|