diff --git a/backend/src/main/java/ru/micord/ervu/security/esia/controller/EsiaController.java b/backend/src/main/java/ru/micord/ervu/security/esia/controller/EsiaController.java index d2de57b..624a505 100644 --- a/backend/src/main/java/ru/micord/ervu/security/esia/controller/EsiaController.java +++ b/backend/src/main/java/ru/micord/ervu/security/esia/controller/EsiaController.java @@ -40,9 +40,8 @@ public class EsiaController { @GetMapping(value = "/esia/auth") public void esiaAuth(@RequestParam(value = "code", required = false) String code, - @RequestParam(value = "error", required = false) String error, HttpServletRequest request, HttpServletResponse response) { - esiaAuthService.authEsiaTokensByCode(code, error, request, response); + esiaAuthService.authEsiaTokensByCode(code, response); } @RequestMapping(value = "/esia/refresh") diff --git a/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java b/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java index 89dbda1..007d63a 100644 --- a/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java +++ b/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java @@ -152,11 +152,7 @@ public class EsiaAuthService { return uriBuilder.toString(); } - public void authEsiaTokensByCode(String esiaAuthCode, String error, - HttpServletRequest request, HttpServletResponse response) { - if (error != null && !error.equals("null")) { - throw new EsiaException(error); - } + public void authEsiaTokensByCode(String esiaAuthCode, HttpServletResponse response) { String esiaAccessTokenStr = null; String prnOid = null; Long expiresIn = null; diff --git a/frontend/src/ts/modules/security/guard/auth.guard.ts b/frontend/src/ts/modules/security/guard/auth.guard.ts index 045946d..76d4c2c 100644 --- a/frontend/src/ts/modules/security/guard/auth.guard.ts +++ b/frontend/src/ts/modules/security/guard/auth.guard.ts @@ -30,37 +30,38 @@ export abstract class AuthGuard implements CanActivate { if (isAccess) { return true; } - if (code || error) { - const params = new HttpParams().set('code', code).set('error', error); + if (error) { + let errorMessage = + 'Произошла неизвестная ошибка. Обратитесь к системному администратору'; + let errorCode = this.extractCode(errorDescription); + if (errorCode) { + errorMessage = EsiaErrorDetail.getDescription(errorCode); + } + let consoleError = error + ', error description = ' + errorDescription; + this.messageService.error(errorMessage); + console.error(consoleError); + } + if (code) { + const params = new HttpParams().set('code', code); this.httpClient.get("esia/auth", { - params: params, responseType: 'text', observe: 'response', headers: { + params: params, + responseType: 'text', + observe: 'response', + headers: { "Error-intercept-skip": "true" } }) .toPromise() .then( - (response) => { + () => { window.open(url.origin + url.pathname, "_self"); }) - .catch((reason) => { - let errorMessage = reason.error.messages != null - ? reason.error.messages - : reason.error.replaceAll('\\', ''); - if (error) { - errorMessage = 'Произошла неизвестная ошибка. Обратитесь к системному администратору'; - let errorCode = this.extractCode(errorDescription); - if (errorCode) { - errorMessage = EsiaErrorDetail.getDescription(errorCode); - } - let consoleError = error + ', error description = ' + errorDescription; - this.messageService.error(errorMessage); - console.error(consoleError); - } - else { - this.messageService.error(errorMessage); - console.error(reason); - } + .catch(reason => { + const json = JSON.parse(reason.error); + json.messages.forEach((errorMessage) => { + this.messageService.error(errorMessage, json); + }); }); return false; }