Files
SupportMe/static/src/userTools.js
2023-12-29 18:31:43 +00:00

130 lines
3.7 KiB
JavaScript

const getDecodedAccessToken = () => {
return localStorage.getItem("access_token") != null ? jwt_decode(localStorage.getItem("access_token")) : null;
}
function getLoggedInUser() {
let d_at = getDecodedAccessToken();
if (d_at == null) return null;
if (d_at["exp"] < (Date.now() / 1000)) {
localStorage.removeItem("access_token");
return null
};
return d_at;
}
async function register() {
let username_input = document.getElementById("username_input");
let email_input = document.getElementById("email_input");
let password_input = document.getElementById("password_input");
let passwordc_input = document.getElementById("passwordc_input");
if (password_input.value != passwordc_input.value) return alert("Passwords do not match.")
const res = await (await fetch('/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
redirect: 'manual',
body: JSON.stringify({
username: username_input.value,
email: email_input.value,
password: password_input.value
})
})).json();
if (res["error"] != undefined) {
alert(res["error"]);
} else {
localStorage.setItem("access_token", res["access_token"]);
window.location.href = "/home";
};
}
async function login() {
let username_input = document.getElementById("username_input");
let password_input = document.getElementById("password_input");
const res = await (await fetch('/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
redirect: 'manual',
body: JSON.stringify({
username: username_input.value,
password: password_input.value
})
})).json();
if (res["error"] != undefined) {
alert(res["error"]);
} else {
localStorage.setItem("access_token", res["access_token"]);
window.location.href = "/home";
};
}
async function logout() {
localStorage.removeItem("access_token");
alert("Successfully logged out.");
window.location.href = "/login";
}
async function getProfile(user_id) {
const res = await (await fetch('/get-profile/' + user_id, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + localStorage.getItem("access_token")
}
})).json();
if (res["error"] != undefined) {
alert(res["error"]);
return false;
} else {
return res["user"];
};
}
async function updateProfile() {
let new_password_input = document.getElementById("new_password_input");
let new_passwordc_input = document.getElementById("new_passwordc_input");
let old_password_input = document.getElementById("old_password_input");
let profile_icon_select = document.getElementById("profile_icon_select");
if (new_password_input.value != new_passwordc_input.value) return alert("Passwords do not match.");
if (old_password_input.value == "") return alert("Old password is needed to confirm changes.");
const res = await (await fetch('/profile', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + localStorage.getItem("access_token")
},
redirect: 'manual',
body: JSON.stringify({
new_password: new_password_input.value,
old_password: old_password_input.value,
profile_icon: profile_icon_select.value
})
})).json();
if (res["error"] != undefined) {
alert(res["error"]);
} else {
alert("Profile updated.");
window.location.reload();
};
}