Logout js
This commit is contained in:
parent
f0a61b13bc
commit
466a421974
142
Logout.js
142
Logout.js
@ -1,12 +1,136 @@
|
|||||||
async function logout() {
|
// ==========================
|
||||||
// Panggil PHP untuk hapus session (opsional)
|
// LOGOUT SYSTEM WITH PHP INTEGRATION
|
||||||
await fetch("http://localhost/Kelompok06_2048/Logout.php", {
|
// ==========================
|
||||||
method: "POST"
|
|
||||||
});
|
|
||||||
|
|
||||||
// Hapus token & username dari localStorage
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
localStorage.removeItem("authToken");
|
checkLoginStatus();
|
||||||
localStorage.removeItem("username");
|
setupLogoutListeners();
|
||||||
|
});
|
||||||
|
|
||||||
window.location.href = "Homepage.html";
|
// Cek status login dan update button
|
||||||
|
function checkLoginStatus() {
|
||||||
|
const loggedInUser = sessionStorage.getItem("loggedInUser");
|
||||||
|
const authToken = localStorage.getItem("authToken"); // Cek token juga
|
||||||
|
const loginBtn = document.querySelector('.login-btn, .logout-btn'); // Cari button
|
||||||
|
|
||||||
|
if (!loginBtn) return;
|
||||||
|
|
||||||
|
// Kalau ada user login ATAU ada authToken
|
||||||
|
if (loggedInUser || authToken) {
|
||||||
|
// User sudah login - ubah jadi logout button
|
||||||
|
loginBtn.textContent = 'Logout';
|
||||||
|
loginBtn.className = 'logout-btn'; // Set class langsung
|
||||||
|
loginBtn.onclick = showLogoutConfirmation;
|
||||||
|
} else {
|
||||||
|
// User belum login - tampilkan login button
|
||||||
|
loginBtn.textContent = 'Login';
|
||||||
|
loginBtn.className = 'login-btn'; // Set class langsung
|
||||||
|
loginBtn.onclick = () => window.location.href = 'Login.html';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup event listeners untuk logout modals
|
||||||
|
function setupLogoutListeners() {
|
||||||
|
const btnLogoutCancel = document.getElementById('btn-logout-cancel');
|
||||||
|
const btnLogoutConfirm = document.getElementById('btn-logout-confirm');
|
||||||
|
const logoutOverlay = document.getElementById('logout-overlay');
|
||||||
|
|
||||||
|
if (btnLogoutCancel) {
|
||||||
|
btnLogoutCancel.addEventListener('click', hideLogoutConfirmation);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (btnLogoutConfirm) {
|
||||||
|
btnLogoutConfirm.addEventListener('click', performLogout);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close modal ketika klik di luar
|
||||||
|
if (logoutOverlay) {
|
||||||
|
logoutOverlay.addEventListener('click', (e) => {
|
||||||
|
if (e.target === logoutOverlay) {
|
||||||
|
hideLogoutConfirmation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tampilkan konfirmasi logout
|
||||||
|
function showLogoutConfirmation() {
|
||||||
|
const overlay = document.getElementById('logout-overlay');
|
||||||
|
if (overlay) {
|
||||||
|
overlay.style.display = 'flex';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sembunyikan konfirmasi logout
|
||||||
|
function hideLogoutConfirmation() {
|
||||||
|
const overlay = document.getElementById('logout-overlay');
|
||||||
|
if (overlay) {
|
||||||
|
overlay.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform logout dengan integrasi PHP
|
||||||
|
async function performLogout() {
|
||||||
|
try {
|
||||||
|
// Panggil PHP untuk hapus session
|
||||||
|
const response = await fetch("http://localhost/Kelompok06_2048/Logout.php", {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const result = await response.json();
|
||||||
|
|
||||||
|
// Hapus data dari localStorage & sessionStorage
|
||||||
|
localStorage.removeItem("authToken");
|
||||||
|
localStorage.removeItem("username");
|
||||||
|
sessionStorage.removeItem("loggedInUser");
|
||||||
|
sessionStorage.removeItem("showTutorial");
|
||||||
|
|
||||||
|
// Sembunyikan confirmation modal
|
||||||
|
hideLogoutConfirmation();
|
||||||
|
|
||||||
|
// Tampilkan success modal
|
||||||
|
showLogoutSuccess();
|
||||||
|
|
||||||
|
// Setelah 2 detik, reload/redirect ke homepage
|
||||||
|
setTimeout(() => {
|
||||||
|
window.location.href = "Homepage.html";
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Logout error:", error);
|
||||||
|
|
||||||
|
// Kalau gagal koneksi ke PHP, tetap logout dari client side
|
||||||
|
localStorage.removeItem("authToken");
|
||||||
|
localStorage.removeItem("username");
|
||||||
|
sessionStorage.removeItem("loggedInUser");
|
||||||
|
sessionStorage.removeItem("showTutorial");
|
||||||
|
|
||||||
|
// Tampilkan error modal (opsional)
|
||||||
|
showLogoutError();
|
||||||
|
|
||||||
|
// Tetap redirect setelah 2 detik
|
||||||
|
setTimeout(() => {
|
||||||
|
window.location.href = "Homepage.html";
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tampilkan logout success
|
||||||
|
function showLogoutSuccess() {
|
||||||
|
const overlay = document.getElementById('logout-success-overlay');
|
||||||
|
if (overlay) {
|
||||||
|
overlay.style.display = 'flex';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tampilkan logout error (OPSIONAL - tambahkan modal error jika mau)
|
||||||
|
function showLogoutError() {
|
||||||
|
// Bisa pakai alert sederhana atau buat modal error sendiri
|
||||||
|
console.log("Logout gagal terhubung ke server, tapi data lokal sudah dihapus");
|
||||||
|
|
||||||
|
// Atau tetap tampilkan success (karena client-side logout berhasil)
|
||||||
|
showLogoutSuccess();
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user