Новые правки
This commit is contained in:
parent
48c750db0d
commit
f182c0e5b1
3 changed files with 82 additions and 26 deletions
|
|
@ -517,30 +517,62 @@ import { COMPANY } from "@constants";
|
|||
`;
|
||||
|
||||
document.getElementById('mobile-logout-btn')?.addEventListener('click', async () => {
|
||||
try {
|
||||
await fetch('/api/auth/logout', { method: 'POST' });
|
||||
} catch (e) {}
|
||||
// Очищаем localStorage
|
||||
localStorage.removeItem('auth_token');
|
||||
localStorage.removeItem('user');
|
||||
localStorage.removeItem('pocketbase_auth');
|
||||
// Удаляем cookie pb_auth
|
||||
document.cookie = 'pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT';
|
||||
document.querySelector('.header-right')?.classList.remove('auth-active');
|
||||
window.location.reload();
|
||||
try {
|
||||
await fetch('/api/auth/logout', { method: 'POST' });
|
||||
} catch (e) {
|
||||
console.error('Logout error:', e);
|
||||
}
|
||||
|
||||
// Очищаем localStorage полностью
|
||||
localStorage.clear();
|
||||
|
||||
// Удаляем cookie pb_auth всеми возможными способами
|
||||
const cookieName = 'pb_auth';
|
||||
const domains = ['', window.location.hostname, '.' + window.location.hostname];
|
||||
const paths = ['/', '/api'];
|
||||
|
||||
domains.forEach(domain => {
|
||||
paths.forEach(path => {
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax`;
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Strict`;
|
||||
});
|
||||
});
|
||||
|
||||
// Альтернативный способ - перезапись пустым значением
|
||||
document.cookie = 'pb_auth=; path=/; max-age=0';
|
||||
document.cookie = 'pb_auth=; path=/; expires=1970-01-01';
|
||||
|
||||
document.querySelector('.header-right')?.classList.remove('auth-active');
|
||||
window.location.reload();
|
||||
});
|
||||
}
|
||||
|
||||
// Обработчик выхода
|
||||
document.getElementById('logout-btn')?.addEventListener('click', async () => {
|
||||
try {
|
||||
await fetch('/api/auth/logout', { method: 'POST' });
|
||||
} catch (e) {}
|
||||
localStorage.removeItem('auth_token');
|
||||
localStorage.removeItem('user');
|
||||
localStorage.removeItem('pocketbase_auth');
|
||||
} catch (e) {
|
||||
console.error('Logout error:', e);
|
||||
}
|
||||
|
||||
// Очищаем localStorage полностью
|
||||
localStorage.clear();
|
||||
|
||||
// Удаляем cookie pb_auth всеми возможными способами
|
||||
const cookieName = 'pb_auth';
|
||||
const domains = ['', window.location.hostname, '.' + window.location.hostname];
|
||||
const paths = ['/', '/api'];
|
||||
|
||||
domains.forEach(domain => {
|
||||
paths.forEach(path => {
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax`;
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Strict`;
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelector('.header-right')?.classList.remove('auth-active');
|
||||
// Остаемся на той же странице
|
||||
window.location.reload();
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -107,13 +107,24 @@ const firstLetter = userName ? userName.charAt(0).toUpperCase() : userEmail?.cha
|
|||
console.error('Logout error:', e);
|
||||
}
|
||||
|
||||
// Очищаем localStorage
|
||||
localStorage.removeItem('auth_token');
|
||||
localStorage.removeItem('user');
|
||||
localStorage.removeItem('pocketbase_auth');
|
||||
// Очищаем localStorage полностью
|
||||
localStorage.clear();
|
||||
|
||||
// Удаляем cookie pb_auth
|
||||
document.cookie = 'pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT';
|
||||
// Удаляем cookie pb_auth всеми возможными способами
|
||||
const cookieName = 'pb_auth';
|
||||
const domains = ['', window.location.hostname, '.' + window.location.hostname];
|
||||
const paths = ['/', '/api'];
|
||||
|
||||
domains.forEach(domain => {
|
||||
paths.forEach(path => {
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax`;
|
||||
document.cookie = `${cookieName}=; path=${path}; domain=${domain}; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Strict`;
|
||||
});
|
||||
});
|
||||
|
||||
// Альтернативный способ
|
||||
document.cookie = 'pb_auth=; path=/; max-age=0';
|
||||
|
||||
// Полностью перезагружаем страницу
|
||||
window.location.reload();
|
||||
|
|
|
|||
|
|
@ -1,10 +1,23 @@
|
|||
import type { APIRoute } from 'astro';
|
||||
|
||||
export const POST: APIRoute = async ({ cookies }) => {
|
||||
export const POST: APIRoute = async ({ cookies, url }) => {
|
||||
// Удаляем куку на сервере
|
||||
cookies.delete('pb_auth', { path: '/' });
|
||||
|
||||
const host = url.hostname;
|
||||
const isSecure = url.protocol === 'https:';
|
||||
|
||||
// Формируем заголовки для удаления cookie со всех возможных комбинаций
|
||||
const setCookieHeaders = [
|
||||
'pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT',
|
||||
'pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Lax',
|
||||
'pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; SameSite=Strict',
|
||||
'pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; Secure',
|
||||
`pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=${host}`,
|
||||
`pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=.${host}`,
|
||||
];
|
||||
|
||||
// Возвращаем заголовок для удаления куки на клиенте
|
||||
// Возвращаем заголовки для удаления куки на клиенте
|
||||
return new Response(JSON.stringify({
|
||||
success: true,
|
||||
message: 'Вы успешно вышли из аккаунта'
|
||||
|
|
@ -12,8 +25,8 @@ export const POST: APIRoute = async ({ cookies }) => {
|
|||
status: 200,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
// Принудительно удаляем куку на клиенте - два варианта для надежности
|
||||
'Set-Cookie': 'pb_auth=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT',
|
||||
// Основной заголовок для удаления
|
||||
'Set-Cookie': setCookieHeaders[0],
|
||||
}
|
||||
});
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue