Migliorata login di PVM
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-02-13 13:19:58 +01:00
parent 4e5a33ebc1
commit 6c1d469e40
2 changed files with 55 additions and 15 deletions

View File

@@ -71,7 +71,7 @@ public class UserCacheService {
}
}
public void cache(String dbName, UserDTO user) {
private void cache(String dbName, UserDTO user) {
cachedUsers.putIfAbsent(dbName, new ArrayList<>());
List<UserDTO> users = cachedUsers.get(dbName);

View File

@@ -311,7 +311,34 @@ public class SystemService {
HashMap<String, Object> userData = null;
if (!UtilityString.isNullOrEmpty(profileDB)) { // SELEZIONE DB DIRETTO
userData = this.getUserdata(username, password, md5User, profileDB);
String dbName = settingsModel.getDbNameFromProfileDb(profileDB);
UserDTO foundUser = userCacheService.retrieveUser(dbName, username, password, requestDataDTO.getApplication());
if (foundUser.isAttivo()) {
String sql = Query.format("SELECT * FROM " + StbUser.ENTITY + " WHERE user_name = {}", username);
StbUser stbUser;
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(profileDB)) {
stbUser = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(mdb.getPrimaryConnection(), sql, StbUser.class);
}
StbUser finalStbUser = stbUser;
userData = new HashMap<String, Object>() {{
put("flag_attivo", foundUser.isAttivo() ? "S" : "N");
put("user_name", foundUser.getUsername());
put("fullName", foundUser.getFullname());
put("full_name", foundUser.getFullname());
put("cod_lang", finalStbUser.getCodLang());
put("cod_mdep", foundUser.getCodMdep());
put("profile_db", profileDB);
put("password_endtime", finalStbUser.getPasswordEndtime());
put("user_code", foundUser.getUserCode());
put("e_mail", foundUser.getEmail());
put("flag_password_expiring", finalStbUser.getFlagPasswordExpiring());
put("Last_access_datetime", finalStbUser.getLastAccessDatetime());
put("key_group", foundUser.getKeyGroup());
}};
}
} else {
List<String> profiles = null;
@@ -335,22 +362,35 @@ public class SystemService {
List<String> profilesWhereUserFound = new ArrayList<>();
for (String profile : profiles) {
HashMap<String, Object> tmpUserData = this.getUserdata(username, password, md5User, profile);
if (tmpUserData != null) {
UserDTO userDTO = new UserDTO()
.setUsername(UtilityHashMap.getValueIfExists(tmpUserData, "user_name"))
.setEmail(UtilityHashMap.getValueIfExists(tmpUserData, "e_mail"))
.setFullname(UtilityHashMap.getValueIfExists(tmpUserData, "full_name"))
.setWeb(true)
.setAttivo("S".equalsIgnoreCase(UtilityHashMap.getValueIfExists(tmpUserData, "flag_attivo")));
String dbName = settingsModel.getDbNameFromProfileDb(profile);
UserDTO foundUser = userCacheService.retrieveUser(dbName, username, password, requestDataDTO.getApplication());
userCacheService.cache(settingsModel.getDbNameFromProfileDb(profile), userDTO);
if ((!this.isUtenteAttivo(userData))) {
userData = tmpUserData;
if (foundUser.isAttivo()) {
String sql = Query.format("SELECT * FROM " + StbUser.ENTITY + " WHERE user_name = {}", username);
StbUser stbUser;
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(profile)) {
stbUser = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(mdb.getPrimaryConnection(), sql, StbUser.class);
}
tmpUserData.put("fullName", userDTO.getFullname());
profilesWhereUserFound.add(profile);
StbUser finalStbUser = stbUser;
userData = new HashMap<String, Object>() {{
put("flag_attivo", foundUser.isAttivo() ? "S" : "N");
put("user_name", foundUser.getUsername());
put("fullName", foundUser.getFullname());
put("full_name", foundUser.getFullname());
put("cod_lang", finalStbUser.getCodLang());
put("cod_mdep", foundUser.getCodMdep());
put("profile_db", profile);
put("password_endtime", finalStbUser.getPasswordEndtime());
put("user_code", foundUser.getUserCode());
put("e_mail", foundUser.getEmail());
put("flag_password_expiring", finalStbUser.getFlagPasswordExpiring());
put("Last_access_datetime", finalStbUser.getLastAccessDatetime());
put("key_group", foundUser.getKeyGroup());
}};
}
}
if (userData != null) {