From c849cdb02a18a2b2e712da533287a9c8660a74ae Mon Sep 17 00:00:00 2001 From: Eduard Tihomirov Date: Tue, 15 Oct 2024 11:19:20 +0300 Subject: [PATCH] SUPPORT-8601: Fix --- .../src/ts/modules/security/EsiaErrorDetail.ts | 12 ++++++++++++ .../src/ts/modules/security/guard/auth.guard.ts | 15 +++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 frontend/src/ts/modules/security/EsiaErrorDetail.ts diff --git a/frontend/src/ts/modules/security/EsiaErrorDetail.ts b/frontend/src/ts/modules/security/EsiaErrorDetail.ts new file mode 100644 index 0000000..9447f3f --- /dev/null +++ b/frontend/src/ts/modules/security/EsiaErrorDetail.ts @@ -0,0 +1,12 @@ +class EsiaErrorDetail { + private static errors: { [code: string]: string } = { + 'ESIA-007071': 'Запрос персональных данных по физическим лицам может быть выполнен только с указанием согласий', + 'ESIA-007055': 'Вход в систему осуществляется с неподтвержденной учетной записью', + 'ESIA-007036': 'Учетная запись заблокирована', + 'ESIA-007008': 'Сервис авторизации в настоящее время не может выполнить запрос из-за большой нагрузки или технических работ на сервере', + }; + + static getDescription(code: string): string { + return this.errors[code] || 'Доступ запрещен. Обратитесь к системному администратору. Ошибка ' + code; + } +} \ No newline at end of file diff --git a/frontend/src/ts/modules/security/guard/auth.guard.ts b/frontend/src/ts/modules/security/guard/auth.guard.ts index 80095f3..754f461 100644 --- a/frontend/src/ts/modules/security/guard/auth.guard.ts +++ b/frontend/src/ts/modules/security/guard/auth.guard.ts @@ -30,8 +30,13 @@ export abstract class AuthGuard implements CanActivate { return true; } else if (error) { - let errorMessage = error + ', error description =' + errorDescription; - this.messageService.error(errorMessage) + let userErrorMessage = 'Произошла неизвестная ошибка. Обратитесь к системному администратору'; + let errorCode = this.extractCode(errorDescription); + if (errorCode) { + userErrorMessage = EsiaErrorDetail.getDescription(errorCode); + } + let errorMessage = error + ', error description = ' + errorDescription; + this.messageService.error(userErrorMessage) throw new Error(errorMessage); } else if (code) { @@ -62,4 +67,10 @@ export abstract class AuthGuard implements CanActivate { public getIsAuth(): string { return this.cookieService.get('webbpm.ervu-lkrp-fl'); } + + private extractCode(message: string): string | null { + const regex = /ESIA-\d{6}/; + const match = message.match(regex); + return match ? match[0] : null; + } }