SUPPORT-8643: Fix

This commit is contained in:
Eduard Tihomirov 2025-02-21 12:23:42 +03:00
parent e790011d1d
commit 9373e897c4
3 changed files with 25 additions and 29 deletions

View file

@ -40,9 +40,8 @@ public class EsiaController {
@GetMapping(value = "/esia/auth") @GetMapping(value = "/esia/auth")
public void esiaAuth(@RequestParam(value = "code", required = false) String code, public void esiaAuth(@RequestParam(value = "code", required = false) String code,
@RequestParam(value = "error", required = false) String error, HttpServletRequest request,
HttpServletResponse response) { HttpServletResponse response) {
esiaAuthService.authEsiaTokensByCode(code, error, request, response); esiaAuthService.authEsiaTokensByCode(code, response);
} }
@RequestMapping(value = "/esia/refresh") @RequestMapping(value = "/esia/refresh")

View file

@ -152,11 +152,7 @@ public class EsiaAuthService {
return uriBuilder.toString(); return uriBuilder.toString();
} }
public void authEsiaTokensByCode(String esiaAuthCode, String error, public void authEsiaTokensByCode(String esiaAuthCode, HttpServletResponse response) {
HttpServletRequest request, HttpServletResponse response) {
if (error != null && !error.equals("null")) {
throw new EsiaException(error);
}
String esiaAccessTokenStr = null; String esiaAccessTokenStr = null;
String prnOid = null; String prnOid = null;
Long expiresIn = null; Long expiresIn = null;

View file

@ -30,37 +30,38 @@ export abstract class AuthGuard implements CanActivate {
if (isAccess) { if (isAccess) {
return true; return true;
} }
if (code || error) { if (error) {
const params = new HttpParams().set('code', code).set('error', 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", this.httpClient.get("esia/auth",
{ {
params: params, responseType: 'text', observe: 'response', headers: { params: params,
responseType: 'text',
observe: 'response',
headers: {
"Error-intercept-skip": "true" "Error-intercept-skip": "true"
} }
}) })
.toPromise() .toPromise()
.then( .then(
(response) => { () => {
window.open(url.origin + url.pathname, "_self"); window.open(url.origin + url.pathname, "_self");
}) })
.catch((reason) => { .catch(reason => {
let errorMessage = reason.error.messages != null const json = JSON.parse(reason.error);
? reason.error.messages json.messages.forEach((errorMessage) => {
: reason.error.replaceAll('\\', ''); this.messageService.error(errorMessage, json);
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);
}
}); });
return false; return false;
} }