62 lines
2.5 KiB
JavaScript
62 lines
2.5 KiB
JavaScript
/**
|
|
* ===============================================================================
|
|
* FILE: static/js/auth.js
|
|
* ROLE: Управление сессией пользователя, токенами и корректным выходом (Logout).
|
|
* ===============================================================================
|
|
*/
|
|
|
|
const AuthManager = {
|
|
getToken() {
|
|
let token = localStorage.getItem("auth_token") || localStorage.getItem("token");
|
|
if (!token) {
|
|
// Если токена нет — инициализируем рабочий дефолтный токен
|
|
token = "dev_token_1";
|
|
localStorage.setItem("auth_token", token);
|
|
localStorage.setItem("user_id", "1");
|
|
}
|
|
return token;
|
|
},
|
|
|
|
getUserId() {
|
|
return parseInt(localStorage.getItem("user_id") || "1", 10);
|
|
},
|
|
|
|
logout() {
|
|
console.log("[Auth] Выполняется выход из учетной записи...");
|
|
|
|
// 1. Полная очистка хранилищ браузера
|
|
localStorage.removeItem("auth_token");
|
|
localStorage.removeItem("token");
|
|
localStorage.removeItem("user_id");
|
|
sessionStorage.clear();
|
|
|
|
// 2. Сброс авторизационных cookies (если присутствуют)
|
|
document.cookie.split(";").forEach((cookie) => {
|
|
const eqPos = cookie.indexOf("=");
|
|
const name = eqPos > -1 ? cookie.substr(0, eqPos).trim() : cookie.trim();
|
|
document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`;
|
|
});
|
|
|
|
// 3. Перезагрузка страницы для сброса состояния интерфейса
|
|
window.location.reload();
|
|
},
|
|
|
|
init() {
|
|
// Привязка клика ко всем элементам с классом или id logout
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
const logoutBtns = document.querySelectorAll("#logout-btn, .logout-btn, [data-action='logout']");
|
|
logoutBtns.forEach(btn => {
|
|
btn.addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
AuthManager.logout();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
// Инициализация при загрузке скрипта
|
|
AuthManager.init();
|
|
|
|
// Глобальная доступность функции для onclick в HTML
|
|
window.logout = () => AuthManager.logout(); |