This commit is contained in:
parent
220caec7cc
commit
f72d7ff8e2
1 changed files with 28 additions and 1 deletions
|
|
@ -13,6 +13,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.UserAuthRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.UserLogoutRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.platform.enumeration.ConnectionState;
|
||||
import ru.spcex.platform.enumeration.Status;
|
||||
|
|
@ -46,17 +47,40 @@ public class UserService extends QueueConsumer implements InitializingBean {
|
|||
callback(UserAuthRequest.class)
|
||||
.setConsumer(this::userAuthSuccess)
|
||||
.forDestination(Consts.USER_AUTH_SUCCESS, callbacks::put);
|
||||
callback(UserLogoutRequest.class)
|
||||
.setConsumer(this::usersLogoutSuccess)
|
||||
.forDestination(Consts.USER_LOGOUT_SUCCESS, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
private void userAuthSuccess(BaseRequest<UserAuthRequest> authEvent) {
|
||||
UserAuthRequest authInfo = authEvent.getRequestPayload();
|
||||
log.debug("user id={} authenticated", authInfo.getUsername());
|
||||
log.debug("user name={} authenticated", authInfo.getUsername());
|
||||
UserInfo userInfo = createUserIfNeeded(authInfo.getUsername());
|
||||
changeRoles(userInfo.userId, userInfo.isNew, authInfo.getRoles());
|
||||
connected(userInfo.userId, authInfo.getTime(), authInfo.getClientIp(), authInfo.getServerIp());
|
||||
}
|
||||
|
||||
private void usersLogoutSuccess(BaseRequest<UserLogoutRequest> logoutEvent) {
|
||||
UserLogoutRequest logoutInfo = logoutEvent.getRequestPayload();
|
||||
log.debug("user name={} logout", logoutInfo.getUsername());
|
||||
User user = userMap.getSingleObjectByFieldValues(Map.of("identifier", logoutInfo.getUsername()));
|
||||
if (user == null) {
|
||||
log.error("coudln't find user {}", logoutInfo.getUsername());
|
||||
return;
|
||||
}
|
||||
UserConnect userConnect = userConnectImdg.getSingleObjectByFieldValues(Map.of("userId", user.getId()));
|
||||
if (userConnect == null) {
|
||||
log.error("coudln't find UserConnect for {}", logoutInfo.getUsername());
|
||||
return;
|
||||
}
|
||||
userConnect.setDisconnectionTime(logoutInfo.getTime());
|
||||
userConnect.setUpdated(logoutInfo.getTime());
|
||||
userConnect.setConnectionState(ConnectionState.Disconnected.getKey());
|
||||
userConnect.setClearingDate(TimeUtil.today());
|
||||
userConnectImdg.update(userConnect);
|
||||
}
|
||||
|
||||
private UserInfo createUserIfNeeded(String username) {
|
||||
User user = userMap.getSingleObjectByFieldValues(Map.of("identifier", username));
|
||||
if (user == null) {
|
||||
|
|
@ -104,7 +128,10 @@ public class UserService extends QueueConsumer implements InitializingBean {
|
|||
if (userConnect == null) {
|
||||
userConnect = new UserConnect();
|
||||
userConnect.setUserId(userId);
|
||||
userConnect.setCreated(time);
|
||||
isNew = true;
|
||||
} else {
|
||||
userConnect.setUpdated(time);
|
||||
}
|
||||
userConnect.setConnectionTime(time);
|
||||
userConnect.setServerIP(serverIp);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue