Merge remote-tracking branch 'origin/feature/SUPPORT-9165_sso_events' into feature/SUPPORT-9166_failed_auth

This commit is contained in:
gulnaz 2025-05-13 09:27:29 +03:00
commit 0eab68de8d
7 changed files with 22 additions and 8 deletions

View file

@ -2,9 +2,11 @@ package ervu_business_metrics.dao;
import java.util.List; import java.util.List;
import ervu_business_metrics.config.KafkaEnabledCondition;
import ervu_business_metrics.model.sso.UserAccount; import ervu_business_metrics.model.sso.UserAccount;
import ervu_business_metrics.model.sso.UserSessionInfo; import ervu_business_metrics.model.sso.UserSessionInfo;
import org.jooq.DSLContext; import org.jooq.DSLContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import ru.micord.webbpm.ervu.business_metrics.db_beans.auth.tables.records.ActiveSessionRecord; import ru.micord.webbpm.ervu.business_metrics.db_beans.auth.tables.records.ActiveSessionRecord;
@ -14,6 +16,7 @@ import static ru.micord.webbpm.ervu.business_metrics.db_beans.auth.Tables.ACTIVE
* @author Adel Kalimullin * @author Adel Kalimullin
*/ */
@Repository @Repository
@Conditional(KafkaEnabledCondition.class)
public class ActiveSessionDao { public class ActiveSessionDao {
private final DSLContext dsl; private final DSLContext dsl;
@ -37,7 +40,7 @@ public class ActiveSessionDao {
dsl.batchInsert(records).execute(); dsl.batchInsert(records).execute();
} }
public void clearActiveSessions() { public void clear() {
dsl.truncate(ACTIVE_SESSION).execute(); dsl.truncate(ACTIVE_SESSION).execute();
} }
} }

View file

@ -1,4 +1,4 @@
package ervu_business_metrics.model.idm.deserializer; package ervu_business_metrics.deserializer;
import java.io.IOException; import java.io.IOException;

View file

@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import ervu_business_metrics.model.ReferenceEntity; import ervu_business_metrics.model.ReferenceEntity;
import ervu_business_metrics.model.idm.deserializer.ReferenceEntityDeserializer; import ervu_business_metrics.deserializer.ReferenceEntityDeserializer;
/** /**
* @author Adel Kalimullin * @author Adel Kalimullin

View file

@ -3,7 +3,7 @@ package ervu_business_metrics.model.sso;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import ervu_business_metrics.model.ReferenceEntity; import ervu_business_metrics.model.ReferenceEntity;
import ervu_business_metrics.model.idm.deserializer.ReferenceEntityDeserializer; import ervu_business_metrics.deserializer.ReferenceEntityDeserializer;
/** /**

View file

@ -38,7 +38,7 @@ public class SessionService {
} }
public void syncSessions() { public void syncSessions() {
activeSessionDao.clearActiveSessions(); activeSessionDao.clear();
List<UserSessionInfo> sessions = fetchSessions(); List<UserSessionInfo> sessions = fetchSessions();
if (!sessions.isEmpty()) { if (!sessions.isEmpty()) {

View file

@ -8,7 +8,6 @@ import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Conditional;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/** /**
@ -24,14 +23,12 @@ public class SessionScheduledService {
} }
@PostConstruct @PostConstruct
@Transactional
public void init() { public void init() {
run(); run();
} }
@Scheduled(cron = "${session.sync.cron:0 */10 * * * *}") @Scheduled(cron = "${session.sync.cron:0 */10 * * * *}")
@SchedulerLock(name = "syncSessions") @SchedulerLock(name = "syncSessions")
@Transactional
public void run() { public void run() {
sessionService.syncSessions(); sessionService.syncSessions();
} }

View file

@ -27,6 +27,12 @@
); );
ALTER TABLE auth.active_session OWNER TO ervu_business_metrics; ALTER TABLE auth.active_session OWNER TO ervu_business_metrics;
COMMENT ON TABLE auth.active_session IS 'Активные сессии пользователей';
COMMENT ON COLUMN auth.active_session.session_id IS 'Идентификатор сессии';
COMMENT ON COLUMN auth.active_session.domain_id IS 'Идентификатор домена';
COMMENT ON COLUMN auth.active_session.user_id IS 'Идентификатор пользователя';
COMMENT ON COLUMN auth.active_session.ip_address IS 'IP-адрес пользователя';
</sql> </sql>
</changeSet> </changeSet>
@ -41,6 +47,14 @@
CONSTRAINT shedlock_pk PRIMARY KEY (name) CONSTRAINT shedlock_pk PRIMARY KEY (name)
); );
ALTER TABLE ervu_business_metrics.shedlock OWNER TO ervu_business_metrics;
COMMENT ON TABLE ervu_business_metrics.shedlock IS 'Таблица для хранения блокировок ShedLock';
COMMENT ON COLUMN ervu_business_metrics.shedlock.name IS 'Имя ресурса блокировки';
COMMENT ON COLUMN ervu_business_metrics.shedlock.lock_until IS 'Время, до которого действует блокировка';
COMMENT ON COLUMN ervu_business_metrics.shedlock.locked_at IS 'Время создания блокировки';
COMMENT ON COLUMN ervu_business_metrics.shedlock.locked_by IS 'Идентификатор узла, установившего блокировку';
</sql> </sql>
</changeSet> </changeSet>