фикс
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();
|
await logout();
|
||||||
return;
|
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) {
|
if (error.response && error.response.status === 403) {
|
||||||
console.log('[Auth] Пользователь заблокирован согласно ответу сервера');
|
console.log('[Auth] Пользователь заблокирован согласно ответу сервера');
|
||||||
|
|
||||||
|
// Сохраняем флаг блокировки в sessionStorage для следующей сессии
|
||||||
|
sessionStorage.setItem('wasBlocked', 'true');
|
||||||
|
|
||||||
// Показываем уведомление о блокировке
|
// Показываем уведомление о блокировке
|
||||||
const notificationEvent = new CustomEvent('show-toast', {
|
const notificationEvent = new CustomEvent('show-toast', {
|
||||||
detail: {
|
detail: {
|
||||||
|
@ -197,3 +197,9 @@ export const getSocket = () => {
|
|||||||
export const isAccountBlocked = () => {
|
export const isAccountBlocked = () => {
|
||||||
return wasAccountBlocked;
|
return wasAccountBlocked;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Новая функция для сброса флага блокировки аккаунта
|
||||||
|
export const resetAccountBlockedFlag = () => {
|
||||||
|
console.log('[SocketService] Сброс флага блокировки аккаунта');
|
||||||
|
wasAccountBlocked = false;
|
||||||
|
};
|
@ -138,8 +138,28 @@ onMounted(async () => {
|
|||||||
// Проверяем query параметры для отображения сообщений
|
// Проверяем query параметры для отображения сообщений
|
||||||
if (route.query.blocked === 'true') {
|
if (route.query.blocked === 'true') {
|
||||||
errorMessage.value = 'Ваш аккаунт заблокирован администратором.';
|
errorMessage.value = 'Ваш аккаунт заблокирован администратором.';
|
||||||
|
blockedInfo.value.blocked = true;
|
||||||
} else if (route.query.unblocked === '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