фикс
This commit is contained in:
parent
22272dd938
commit
60c524caf6
58
src/auth.js
58
src/auth.js
@ -57,6 +57,61 @@ async function fetchUser() {
|
||||
// Выходим из системы
|
||||
await logout();
|
||||
return;
|
||||
} else {
|
||||
// Если пользователь НЕ заблокирован, проверяем и очищаем любые флаги блокировки
|
||||
console.log('[Auth] Пользователь не заблокирован, проверяем наличие старых флагов блокировки');
|
||||
|
||||
// Очищаем флаги блокировки из localStorage, если они есть
|
||||
const blockFlags = ['accountBlocked', 'deviceBlocked', 'wasAccountBlocked'];
|
||||
blockFlags.forEach(flag => {
|
||||
if (localStorage.getItem(flag)) {
|
||||
console.log(`[Auth] Очищаем флаг блокировки: ${flag}`);
|
||||
localStorage.removeItem(flag);
|
||||
}
|
||||
});
|
||||
|
||||
// Проверяем URL на наличие параметра blocked и очищаем его при необходимости
|
||||
const currentUrl = new URL(window.location);
|
||||
if (currentUrl.searchParams.has('blocked')) {
|
||||
console.log('[Auth] Обнаружен параметр blocked в URL, пользователь не заблокирован - очищаем');
|
||||
currentUrl.searchParams.delete('blocked');
|
||||
// Обновляем URL без перезагрузки страницы
|
||||
window.history.replaceState({}, '', currentUrl.toString());
|
||||
}
|
||||
|
||||
// Сбрасываем флаг блокировки аккаунта в socketService
|
||||
try {
|
||||
const { resetAccountBlockedFlag } = await import('./services/socketService');
|
||||
if (typeof resetAccountBlockedFlag === 'function') {
|
||||
resetAccountBlockedFlag();
|
||||
console.log('[Auth] Сброшен флаг блокировки в socketService');
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('[Auth] Не удалось сбросить флаг в socketService:', error.message);
|
||||
}
|
||||
|
||||
// Показываем уведомление о том, что блокировка снята (если ранее была)
|
||||
if (currentUrl.searchParams.has('unblocked') ||
|
||||
sessionStorage.getItem('wasBlocked') === 'true') {
|
||||
|
||||
const notificationEvent = new CustomEvent('show-toast', {
|
||||
detail: {
|
||||
message: 'Блокировка вашего аккаунта была снята. Добро пожаловать!',
|
||||
type: 'success',
|
||||
duration: 5000
|
||||
}
|
||||
});
|
||||
window.dispatchEvent(notificationEvent);
|
||||
|
||||
// Очищаем флаг из sessionStorage
|
||||
sessionStorage.removeItem('wasBlocked');
|
||||
|
||||
// Очищаем параметр unblocked из URL
|
||||
if (currentUrl.searchParams.has('unblocked')) {
|
||||
currentUrl.searchParams.delete('unblocked');
|
||||
window.history.replaceState({}, '', currentUrl.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Сохраняем данные пользователя
|
||||
@ -71,6 +126,9 @@ async function fetchUser() {
|
||||
if (error.response && error.response.status === 403) {
|
||||
console.log('[Auth] Пользователь заблокирован согласно ответу сервера');
|
||||
|
||||
// Сохраняем флаг блокировки в sessionStorage для следующей сессии
|
||||
sessionStorage.setItem('wasBlocked', 'true');
|
||||
|
||||
// Показываем уведомление о блокировке
|
||||
const notificationEvent = new CustomEvent('show-toast', {
|
||||
detail: {
|
||||
|
@ -197,3 +197,9 @@ export const getSocket = () => {
|
||||
export const isAccountBlocked = () => {
|
||||
return wasAccountBlocked;
|
||||
};
|
||||
|
||||
// Новая функция для сброса флага блокировки аккаунта
|
||||
export const resetAccountBlockedFlag = () => {
|
||||
console.log('[SocketService] Сброс флага блокировки аккаунта');
|
||||
wasAccountBlocked = false;
|
||||
};
|
@ -138,8 +138,28 @@ onMounted(async () => {
|
||||
// Проверяем query параметры для отображения сообщений
|
||||
if (route.query.blocked === 'true') {
|
||||
errorMessage.value = 'Ваш аккаунт заблокирован администратором.';
|
||||
blockedInfo.value.blocked = true;
|
||||
} else if (route.query.unblocked === 'true') {
|
||||
errorMessage.value = 'Ваш аккаунт был разблокирован. Пожалуйста, войдите в систему.';
|
||||
// Показываем положительное сообщение о разблокировке
|
||||
const successEvent = new CustomEvent('show-toast', {
|
||||
detail: {
|
||||
message: 'Ваш аккаунт был разблокирован. Добро пожаловать обратно!',
|
||||
type: 'success',
|
||||
duration: 5000
|
||||
}
|
||||
});
|
||||
window.dispatchEvent(successEvent);
|
||||
|
||||
// Очищаем параметр из URL
|
||||
const currentUrl = new URL(window.location);
|
||||
currentUrl.searchParams.delete('unblocked');
|
||||
window.history.replaceState({}, '', currentUrl.toString());
|
||||
}
|
||||
|
||||
// Проверяем sessionStorage на наличие флага блокировки
|
||||
if (sessionStorage.getItem('wasBlocked') === 'true') {
|
||||
blockedInfo.value.blocked = true;
|
||||
blockedInfo.value.message = 'Ваш аккаунт был заблокирован администратором.';
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user