hl-core 0.0.10-beta.65 → 0.0.10-beta.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -82,7 +82,6 @@ function extractErrorMessage(data: any, status: number, dataStore: any): string
82
82
  * - Автоматическое добавление токена авторизации
83
83
  * - Обработку различных окружений (dev/prod)
84
84
  * - Комплексную обработку ошибок с информативными сообщениями
85
- * - Мягкую обработку 401 ошибок с сохранением redirect URL
86
85
  * - Защиту от дублирования 401 ошибок
87
86
  */
88
87
  export default function setupInterceptors(axios: AxiosInstance): void {
package/locales/ru.json CHANGED
@@ -36,7 +36,7 @@
36
36
  "serverError": "Произошла ошибка на сервере. Попробуйте позже",
37
37
  "unknownError": "Произошла непредвиденная ошибка. Пожалуйста, перезагрузите страницу",
38
38
  "timeout": "Время ожидания истекло. Проверьте соединение и повторите попытку",
39
- "networkError": "Нет подключения к сети. Проверьте интернет и попробуйте снова",
39
+ "networkError": "Нет подключения к сети. Проверьте интернет и попробуйте снова"
40
40
  },
41
41
  "toaster": {
42
42
  "wrongFormatOf": "Некорректный формат \"{text}\"",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hl-core",
3
- "version": "0.0.10-beta.65",
3
+ "version": "0.0.10-beta.66",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "nuxt.config.ts",
@@ -16,6 +16,7 @@
16
16
  "plugins/",
17
17
  "pages/",
18
18
  "types/",
19
+ "utils/",
19
20
  "nuxt.config.ts",
20
21
  "tailwind.config.js",
21
22
  "tsconfig.json",
@@ -0,0 +1,42 @@
1
+ import { redirectUtils } from './redirect-utils';
2
+
3
+ /**
4
+ * Обрабатывает успешную авторизацию с переходом на сохраненную страницу
5
+ */
6
+ export async function handleSuccessfulLogin(router: any) {
7
+ try {
8
+ const redirectUrl = redirectUtils.getAndClearRedirectUrl();
9
+
10
+ if (redirectUrl) {
11
+ await router.push(redirectUrl);
12
+ } else {
13
+ await router.push({ name: 'index' });
14
+ }
15
+ } catch (error) {
16
+ console.error('Redirect error:', error);
17
+ await router.push({ name: 'index' });
18
+ }
19
+ }
20
+
21
+ /**
22
+ * Обрабатывает выход пользователя с очисткой данных
23
+ */
24
+ export function handleLogout() {
25
+ redirectUtils.clearRedirectUrl();
26
+ localStorage.removeItem('accessToken');
27
+ localStorage.removeItem('refreshToken');
28
+ }
29
+
30
+ /**
31
+ * Проверяет есть ли ожидающий redirect URL
32
+ */
33
+ export function checkPendingRedirect(): boolean {
34
+ return !!localStorage.getItem('redirect_url');
35
+ }
36
+
37
+ /**
38
+ * Сохраняет текущую страницу перед переходом на авторизацию
39
+ */
40
+ export function saveCurrentPageBeforeAuth() {
41
+ redirectUtils.saveCurrentUrl();
42
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Утилиты для работы с redirect URL при авторизации
3
+ */
4
+ export const redirectUtils = {
5
+ /**
6
+ * Сохраняет текущий URL для возврата после авторизации
7
+ */
8
+ saveCurrentUrl(route?: any): void {
9
+ let currentPath: string;
10
+
11
+ if (route && route.fullPath) {
12
+ currentPath = route.fullPath;
13
+ } else {
14
+ currentPath = window.location.pathname + window.location.search;
15
+ }
16
+
17
+ const excludedPaths = ['/auth', '/login', '/logout'];
18
+
19
+ console.log('Saving redirect URL:', currentPath);
20
+
21
+ if (!excludedPaths.some(path => currentPath.startsWith(path))) {
22
+ localStorage.setItem('redirect_url', currentPath);
23
+ console.log('Redirect URL saved:', currentPath);
24
+ } else {
25
+ console.log('URL excluded from redirect:', currentPath);
26
+ }
27
+ },
28
+
29
+ /**
30
+ * Получает сохраненный URL и удаляет его из хранилища
31
+ */
32
+ getAndClearRedirectUrl(): string | null {
33
+ const redirectUrl = localStorage.getItem('redirect_url');
34
+ console.log('Getting redirect URL:', redirectUrl);
35
+ if (redirectUrl) {
36
+ localStorage.removeItem('redirect_url');
37
+ console.log('Redirect URL cleared and returned:', redirectUrl);
38
+ return redirectUrl;
39
+ }
40
+ console.log('No redirect URL found');
41
+ return null;
42
+ },
43
+
44
+ /**
45
+ * Очищает сохраненный redirect URL
46
+ */
47
+ clearRedirectUrl(): void {
48
+ localStorage.removeItem('redirect_url');
49
+ },
50
+
51
+ /**
52
+ * Получает сохраненный URL без удаления (для отладки)
53
+ */
54
+ getCurrentRedirectUrl(): string | null {
55
+ return localStorage.getItem('redirect_url');
56
+ },
57
+ };