Новые правки
This commit is contained in:
parent
f182c0e5b1
commit
b12de1e9c0
2 changed files with 88 additions and 8 deletions
|
|
@ -274,6 +274,22 @@ import { COMPANY } from "@constants";
|
||||||
.mobile-auth-block {
|
.mobile-auth-block {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
transition: all 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Анимация плавного исчезновения */
|
||||||
|
.mobile-auth-block.fade-out {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.8);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-auth-block.fade-out-complete {
|
||||||
|
opacity: 0;
|
||||||
|
width: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Кнопка входа - круглая иконка */
|
/* Кнопка входа - круглая иконка */
|
||||||
|
|
@ -287,6 +303,7 @@ import { COMPANY } from "@constants";
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border: 2px solid #1e3050;
|
border: 2px solid #1e3050;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
transition: all 0.3s ease-out;
|
||||||
color: #1e3050;
|
color: #1e3050;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
|
|
@ -517,14 +534,26 @@ import { COMPANY } from "@constants";
|
||||||
`;
|
`;
|
||||||
|
|
||||||
document.getElementById('mobile-logout-btn')?.addEventListener('click', async () => {
|
document.getElementById('mobile-logout-btn')?.addEventListener('click', async () => {
|
||||||
|
const mobileAuthBlock = document.getElementById('mobile-auth-block');
|
||||||
|
|
||||||
|
// Запускаем анимацию плавного исчезновения
|
||||||
|
if (mobileAuthBlock) {
|
||||||
|
mobileAuthBlock.classList.add('fade-out');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ждем завершения анимации
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 300));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await fetch('/api/auth/logout', { method: 'POST' });
|
await fetch('/api/auth/logout', { method: 'POST' });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Logout error:', e);
|
console.error('Logout error:', e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Очищаем localStorage полностью
|
// Очищаем только данные авторизации, НЕ трогаем cookie_consent
|
||||||
localStorage.clear();
|
localStorage.removeItem('auth_token');
|
||||||
|
localStorage.removeItem('user');
|
||||||
|
localStorage.removeItem('pocketbase_auth');
|
||||||
|
|
||||||
// Удаляем cookie pb_auth всеми возможными способами
|
// Удаляем cookie pb_auth всеми возможными способами
|
||||||
const cookieName = 'pb_auth';
|
const cookieName = 'pb_auth';
|
||||||
|
|
@ -539,9 +568,8 @@ import { COMPANY } from "@constants";
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Альтернативный способ - перезапись пустым значением
|
// Альтернативный способ
|
||||||
document.cookie = 'pb_auth=; path=/; max-age=0';
|
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');
|
document.querySelector('.header-right')?.classList.remove('auth-active');
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
|
|
@ -550,14 +578,27 @@ import { COMPANY } from "@constants";
|
||||||
|
|
||||||
// Обработчик выхода
|
// Обработчик выхода
|
||||||
document.getElementById('logout-btn')?.addEventListener('click', async () => {
|
document.getElementById('logout-btn')?.addEventListener('click', async () => {
|
||||||
|
// Находим блок user-display
|
||||||
|
const userDisplay = document.querySelector('.user-display');
|
||||||
|
|
||||||
|
// Запускаем анимацию плавного исчезновения
|
||||||
|
if (userDisplay) {
|
||||||
|
userDisplay.classList.add('fade-out');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ждем завершения анимации
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 300));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await fetch('/api/auth/logout', { method: 'POST' });
|
await fetch('/api/auth/logout', { method: 'POST' });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Logout error:', e);
|
console.error('Logout error:', e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Очищаем localStorage полностью
|
// Очищаем только данные авторизации, НЕ трогаем cookie_consent
|
||||||
localStorage.clear();
|
localStorage.removeItem('auth_token');
|
||||||
|
localStorage.removeItem('user');
|
||||||
|
localStorage.removeItem('pocketbase_auth');
|
||||||
|
|
||||||
// Удаляем cookie pb_auth всеми возможными способами
|
// Удаляем cookie pb_auth всеми возможными способами
|
||||||
const cookieName = 'pb_auth';
|
const cookieName = 'pb_auth';
|
||||||
|
|
@ -622,7 +663,25 @@ import { COMPANY } from "@constants";
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
|
transition: all 0.3s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Анимация плавного исчезновения для десктопа */
|
||||||
|
.user-display.fade-out {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.8);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-display.fade-out-complete {
|
||||||
|
opacity: 0;
|
||||||
|
width: 0;
|
||||||
|
gap: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
.user-avatar {
|
.user-avatar {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,14 @@ const firstLetter = userName ? userName.charAt(0).toUpperCase() : userEmail?.cha
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
|
transition: all 0.3s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Анимация плавного исчезновения */
|
||||||
|
.user-menu.fade-out {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.9);
|
||||||
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-avatar {
|
.user-avatar {
|
||||||
|
|
@ -99,6 +107,17 @@ const firstLetter = userName ? userName.charAt(0).toUpperCase() : userEmail?.cha
|
||||||
const logoutBtn = document.getElementById('logout-btn');
|
const logoutBtn = document.getElementById('logout-btn');
|
||||||
|
|
||||||
logoutBtn?.addEventListener('click', async () => {
|
logoutBtn?.addEventListener('click', async () => {
|
||||||
|
// Находим блок user-menu
|
||||||
|
const userMenu = document.querySelector('.user-menu');
|
||||||
|
|
||||||
|
// Запускаем анимацию плавного исчезновения
|
||||||
|
if (userMenu) {
|
||||||
|
userMenu.classList.add('fade-out');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ждем завершения анимации
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 300));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await fetch('/api/auth/logout', {
|
await fetch('/api/auth/logout', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|
@ -107,8 +126,10 @@ const firstLetter = userName ? userName.charAt(0).toUpperCase() : userEmail?.cha
|
||||||
console.error('Logout error:', e);
|
console.error('Logout error:', e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Очищаем localStorage полностью
|
// Очищаем только данные авторизации, НЕ трогаем cookie_consent
|
||||||
localStorage.clear();
|
localStorage.removeItem('auth_token');
|
||||||
|
localStorage.removeItem('user');
|
||||||
|
localStorage.removeItem('pocketbase_auth');
|
||||||
|
|
||||||
// Удаляем cookie pb_auth всеми возможными способами
|
// Удаляем cookie pb_auth всеми возможными способами
|
||||||
const cookieName = 'pb_auth';
|
const cookieName = 'pb_auth';
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue