SUPPORT-9083: Add local excp

This commit is contained in:
Eduard Tihomirov 2025-04-07 12:19:54 +03:00
parent 3ac1a2b232
commit 5b1bc1af76
3 changed files with 14 additions and 4 deletions

View file

@ -8,10 +8,13 @@ import java.util.concurrent.CopyOnWriteArrayList;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.micord.ervu.security.esia.exception.EsiaException; import org.springframework.context.support.MessageSourceAccessor;
import ru.micord.ervu.security.esia.model.ExpiringState; import ru.micord.ervu.security.esia.model.ExpiringState;
import ru.micord.ervu.security.esia.model.ExpiringToken; import ru.micord.ervu.security.esia.model.ExpiringToken;
import ru.cg.webbpm.modules.core.runtime.api.LocalizedException;
import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils;
/** /**
* @author Eduard Tihomirov * @author Eduard Tihomirov
*/ */
@ -20,6 +23,8 @@ public class EsiaAuthInfoStore {
private static final Map<String, ExpiringToken> ACCESS_TOKENS_MAP = new ConcurrentHashMap<>(); private static final Map<String, ExpiringToken> ACCESS_TOKENS_MAP = new ConcurrentHashMap<>();
private static final Map<String, ExpiringToken> REFRESH_TOKENS_MAP = new ConcurrentHashMap<>(); private static final Map<String, ExpiringToken> REFRESH_TOKENS_MAP = new ConcurrentHashMap<>();
private static final Map<String, List<ExpiringState>> PRNS_UUID_STATE_MAP = new ConcurrentHashMap<>(); private static final Map<String, List<ExpiringState>> PRNS_UUID_STATE_MAP = new ConcurrentHashMap<>();
private static final MessageSourceAccessor MESSAGE_SOURCE = MessageBundleUtils.createAccessor(
"messages/common_errors_messages");
public static void addAccessToken(String prnOid, String token, long expiresIn) { public static void addAccessToken(String prnOid, String token, long expiresIn) {
if (token != null) { if (token != null) {
@ -89,8 +94,11 @@ public class EsiaAuthInfoStore {
if (states == null) { if (states == null) {
states = new CopyOnWriteArrayList<>(); states = new CopyOnWriteArrayList<>();
} }
else {
states.removeIf(ExpiringState::isExpired);
}
if (states.size() >= attemptsCount) { if (states.size() >= attemptsCount) {
throw new EsiaException("The number of login attempts has been exceeded."); throw new LocalizedException("login_attempts_exceeded", MESSAGE_SOURCE);
} }
states.add(newState); states.add(newState);
return states; return states;

View file

@ -1,2 +1,3 @@
kafka_reply_timeout=Превышено время ожидания ответа от сервера. kafka_reply_timeout=Превышено время ожидания ответа от сервера.
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.

View file

@ -1,2 +1,3 @@
kafka_reply_timeout=Превышено время ожидания ответа от сервера. kafka_reply_timeout=Превышено время ожидания ответа от сервера.
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.