42 lines
1.5 KiB
JavaScript
42 lines
1.5 KiB
JavaScript
// src/utils/cookies.js
|
|
|
|
const TOKEN_KEY = 'sdn_auth_token';
|
|
|
|
/**
|
|
* Получает токен авторизации из куки.
|
|
* @returns {string|null} Токен или null, если не найден.
|
|
*/
|
|
export function getAuthToken() {
|
|
const nameEQ = TOKEN_KEY + "=";
|
|
const ca = document.cookie.split(';');
|
|
for(let i=0; i < ca.length; i++) {
|
|
let c = ca[i];
|
|
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
|
|
if (c.indexOf(nameEQ) === 0) {
|
|
return c.substring(nameEQ.length, c.length);
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Устанавливает токен авторизации в куки на 1 год.
|
|
* @param {string} token - Токен для сохранения.
|
|
*/
|
|
export function setAuthToken(token) {
|
|
const expirationDate = new Date();
|
|
// Устанавливаем срок действия на 1 год
|
|
expirationDate.setTime(expirationDate.getTime() + (365 * 24 * 60 * 60 * 1000));
|
|
const expires = "expires=" + expirationDate.toUTCString();
|
|
|
|
// Используем secure и samesite=Lax (рекомендуется для современных браузеров)
|
|
// path=/ делает токен доступным для всего сайта
|
|
document.cookie = `${TOKEN_KEY}=${token};${expires};path=/;samesite=Lax`;
|
|
}
|
|
|
|
/**
|
|
* Удаляет токен авторизации.
|
|
*/
|
|
export function removeAuthToken() {
|
|
document.cookie = `${TOKEN_KEY}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
|
|
} |