mirror of
https://github.com/0xShay/SupportMe.git
synced 2026-01-11 05:13:24 +00:00
130 lines
3.7 KiB
JavaScript
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();
|
|
};
|
|
|
|
} |