[WMS] Refactoring per autenticatione OAuth
This commit is contained in:
1
.idea/runConfigurations/Tomcat.xml
generated
1
.idea/runConfigurations/Tomcat.xml
generated
@@ -1,7 +1,6 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Tomcat" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat" ALTERNATIVE_JRE_ENABLED="false" ALTERNATIVE_JRE_PATH="1.8" nameIsGenerated="true">
|
||||
<option name="COMMON_VM_ARGUMENTS" value="-Xms512m -Xmx2048m" />
|
||||
<option name="UPDATING_POLICY" value="restart-server" />
|
||||
<deployment>
|
||||
<artifact name="ems-engine:war exploded">
|
||||
<settings>
|
||||
|
||||
@@ -3,18 +3,16 @@ package it.integry.ems._context;
|
||||
import it.integry.annotations.PostContextConstruct;
|
||||
import it.integry.common.var.EmsDBConst;
|
||||
import it.integry.ems.datasource.DataSource;
|
||||
import it.integry.ems.dynamic_cache.DynamicCacheService;
|
||||
import it.integry.ems.expansion.RunnableArgs;
|
||||
import it.integry.ems.settings.Model.AvailableConnectionsModel;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems.settings.SettingsController;
|
||||
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.user.UserCacheService;
|
||||
import it.integry.ems.user.service.UserCacheService;
|
||||
import it.integry.ems_model.entity.Azienda;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityHashMap;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -22,9 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class EmsCoreDBLoader {
|
||||
|
||||
@@ -2,7 +2,8 @@ package it.integry.ems.model;
|
||||
|
||||
public enum IntegryApplicationEnum {
|
||||
GESTIONALE_BASE("5858a2a0-1188-4edd-8f71-d7da5bfb350d"),
|
||||
PVM("845da2d9-f2f9-4f8d-ad5b-34b65a91eb6d");
|
||||
PVM("845da2d9-f2f9-4f8d-ad5b-34b65a91eb6d"),
|
||||
WMS("fa3a21af-606b-4129-a22b-aedc2a52c7b6");
|
||||
|
||||
private String text;
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package it.integry.ems.system.user.controller;
|
||||
package it.integry.ems.user.controller;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.response.StatusResponse;
|
||||
import it.integry.ems.status.ServiceChecker;
|
||||
import it.integry.ems.system.dto.ChangePasswordDTO;
|
||||
import it.integry.ems.system.user.service.UserService;
|
||||
import it.integry.ems.user.dto.ChangePasswordDTO;
|
||||
import it.integry.ems.user.service.UserService;
|
||||
import it.integry.ems_model.entity.StbUser;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -54,4 +54,10 @@ public class UserController {
|
||||
return ServiceRestResponse.createPositiveResponse(userService.changePassword(passwordDTO));
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping(value = "availableProfiles", method = RequestMethod.GET)
|
||||
public ServiceRestResponse changePassword(@RequestParam String username) throws Exception {
|
||||
return ServiceRestResponse.createPositiveResponse(userService.retrieveAvailableProfiles(username));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package it.integry.ems.system.user.controller;
|
||||
package it.integry.ems.user.controller;
|
||||
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.system.user.dto.UserRegistrationDTO;
|
||||
import it.integry.ems.system.user.service.UserRegistrationService;
|
||||
import it.integry.ems.user.dto.UserRegistrationDTO;
|
||||
import it.integry.ems.user.service.UserRegistrationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.ems.system.dto;
|
||||
package it.integry.ems.user.dto;
|
||||
|
||||
public class ChangePasswordDTO {
|
||||
private String password;
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.ems.system.user.dto;
|
||||
package it.integry.ems.user.dto;
|
||||
|
||||
public class UserRegistrationDTO {
|
||||
private String name;
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.ems.user;
|
||||
package it.integry.ems.user.service;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
@@ -20,7 +20,10 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class UserCacheService {
|
||||
@@ -144,4 +147,9 @@ public class UserCacheService {
|
||||
cachedUsers.putIfAbsent(profileDB, new ArrayList<>());
|
||||
}
|
||||
|
||||
public void invalidateCache() {
|
||||
this.cachedUsers.clear();
|
||||
this.internalCheck();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package it.integry.ems.system.user.service;
|
||||
package it.integry.ems.user.service;
|
||||
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.system.user.dto.UserRegistrationDTO;
|
||||
import it.integry.ems.user.dto.UserRegistrationDTO;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
import it.integry.ems_model.entity.StbUser;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
@@ -1,11 +1,12 @@
|
||||
package it.integry.ems.system.user.service;
|
||||
package it.integry.ems.user.service;
|
||||
|
||||
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.system.dto.ChangePasswordDTO;
|
||||
import it.integry.ems.user.UtilityUser;
|
||||
import it.integry.ems.user.dto.ChangePasswordDTO;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
@@ -22,6 +23,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.io.IOException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
@@ -35,12 +37,18 @@ public class UserService {
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
|
||||
public StbUser save (StbUser stbUser) throws Exception {
|
||||
@Autowired
|
||||
private UserCacheService userCacheService;
|
||||
|
||||
@Autowired
|
||||
private SettingsModel settingsModel;
|
||||
|
||||
public StbUser save(StbUser stbUser) throws Exception {
|
||||
String sql =
|
||||
Query.format(
|
||||
"SELECT dbo.sys_dcd_pss(password)\n" +
|
||||
"FROM stb_user\n" +
|
||||
"WHERE user_name = %s ", stbUser.getUserName());
|
||||
"SELECT dbo.sys_dcd_pss(password)\n" +
|
||||
"FROM stb_user\n" +
|
||||
"WHERE user_name = %s ", stbUser.getUserName());
|
||||
|
||||
String oldPassword = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
@@ -53,7 +61,7 @@ public class UserService {
|
||||
return stbUser;
|
||||
}
|
||||
|
||||
public StbUser changePassword (ChangePasswordDTO passwordDTO) throws Exception {
|
||||
public StbUser changePassword(ChangePasswordDTO passwordDTO) throws Exception {
|
||||
StbUser stbUser =
|
||||
new StbUser()
|
||||
.setUserName(requestDataDTO.getUsername());
|
||||
@@ -62,14 +70,14 @@ public class UserService {
|
||||
|
||||
Date expiringDate = EmsRestConstants.DATE_NULL;
|
||||
if (stbUser.getFlagPasswordExpiring().equalsIgnoreCase("S") &&
|
||||
stbUser.getPasswordExpiresDays() != 0) {
|
||||
stbUser.getPasswordExpiresDays() != 0) {
|
||||
expiringDate = UtilityDate.dateAdd(new Date(), stbUser.getPasswordExpiresDays());
|
||||
}
|
||||
|
||||
stbUser
|
||||
.setPassword(passwordDTO.getPassword())
|
||||
.setCryptPassword(true)
|
||||
.setPasswordEndtime(expiringDate);
|
||||
.setPassword(passwordDTO.getPassword())
|
||||
.setCryptPassword(true)
|
||||
.setPasswordEndtime(expiringDate);
|
||||
stbUser.setOperation(OperationType.UPDATE);
|
||||
|
||||
entityProcessor.processEntity(stbUser, multiDBTransactionManager);
|
||||
@@ -79,7 +87,6 @@ public class UserService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String retrieveCodJflav(String username) throws SQLException, IOException, PrimaryDatabaseNotPresentException {
|
||||
String sql = Query.format("SELECT TOP 1 cod_jflav " +
|
||||
" FROM jrl_flav_users " +
|
||||
@@ -88,4 +95,45 @@ public class UserService {
|
||||
|
||||
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
}
|
||||
|
||||
public List<String> retrieveAvailableProfiles(String username) {
|
||||
|
||||
List<String> profiles;
|
||||
|
||||
profiles = userCacheService.retrieveProfilesOfUserByUsername(username);
|
||||
|
||||
if (profiles.isEmpty()) {
|
||||
// SELEZIONE CICLICA IN TUTTI I DB SPECIFICATI
|
||||
userCacheService.invalidateCache();
|
||||
profiles = userCacheService.retrieveProfilesOfUserByUsername(username);
|
||||
}
|
||||
|
||||
return profiles;
|
||||
//
|
||||
// for (String profile : profiles) {
|
||||
// multiDBTransactionManager.closeAll();
|
||||
// multiDBTransactionManager.setPrimaryDs(profile);
|
||||
//
|
||||
// try {
|
||||
// StbUser tmpUserData = this.getUser(username, password, multiDBTransactionManager);
|
||||
//
|
||||
// if (tmpUserData != null) {
|
||||
// UserDTO userDTO = new UserDTO()
|
||||
// .setUsername(tmpUserData.getUsername())
|
||||
// .setEmail(tmpUserData.geteMail())
|
||||
// .setFullname(tmpUserData.getFullName())
|
||||
// .setType("web")
|
||||
// .setAttivo("S".equalsIgnoreCase(tmpUserData.getFlagAttivo()));
|
||||
//
|
||||
// userCacheService.cache(profile, userDTO);
|
||||
//
|
||||
// userData.setUser(tmpUserData);
|
||||
//
|
||||
// profilesWhereUserFound.add(profile);
|
||||
// }
|
||||
// } finally {
|
||||
// multiDBTransactionManager.closeAll();
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
@@ -3,25 +3,19 @@ package it.integry.security.cache;
|
||||
import com.annimon.stream.Stream;
|
||||
import io.jsonwebtoken.io.Decoders;
|
||||
import io.jsonwebtoken.security.Keys;
|
||||
import it.integry.annotations.PostContextAutowired;
|
||||
import it.integry.annotations.PostContextConstruct;
|
||||
import it.integry.ems.datasource.DataSource;
|
||||
import it.integry.ems.looper.service.LooperService;
|
||||
import it.integry.ems.settings.Model.AvailableConnectionsModel;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.user.UserCacheService;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems_model.entity.Azienda;
|
||||
import net.jodah.expiringmap.ExpiringMap;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
import java.io.IOException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@@ -5,6 +5,7 @@ import it.integry.ems.exception.AuthorizationExpriredException;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems_model.entity.StbAuthToken;
|
||||
import it.integry.ems_model.utility.UtilityLocalDate;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import it.integry.security.cache.JwtTokenCacheComponent;
|
||||
import it.integry.security.dto.LoginRequestDTO;
|
||||
import it.integry.security.dto.LogoutRequestDTO;
|
||||
@@ -44,7 +45,8 @@ public class AuthController {
|
||||
@RequestParam(value = CommonConstants.PROFILE_DB, required = false) String profileDb,
|
||||
@RequestBody LoginRequestDTO loginRequestDTO) {
|
||||
try {
|
||||
loginRequestDTO.setProfileDb(profileDb);
|
||||
if(UtilityString.isNullOrEmpty(loginRequestDTO.getProfileDb()))
|
||||
loginRequestDTO.setProfileDb(profileDb);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(authService.login(loginRequestDTO));
|
||||
} catch (AuthorizationExpriredException ex) {
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package it.integry.security.dto;
|
||||
|
||||
public class AuthTokenProfileDetails {
|
||||
public final AuthTokenDepoDetails defaultDepo;
|
||||
public AuthTokenDepoDetails defaultDepo;
|
||||
|
||||
public AuthTokenProfileDetails() {
|
||||
}
|
||||
|
||||
public AuthTokenProfileDetails(AuthTokenDepoDetails defaultDepo) {
|
||||
this.defaultDepo = defaultDepo;
|
||||
@@ -10,4 +13,9 @@ public class AuthTokenProfileDetails {
|
||||
public AuthTokenDepoDetails getDefaultDepo() {
|
||||
return defaultDepo;
|
||||
}
|
||||
|
||||
public AuthTokenProfileDetails setDefaultDepo(AuthTokenDepoDetails defaultDepo) {
|
||||
this.defaultDepo = defaultDepo;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package it.integry.security.dto;
|
||||
|
||||
public class RefreshRequestDTO {
|
||||
String refreshToken;
|
||||
String profileDb;
|
||||
String deviceId;
|
||||
private String refreshToken;
|
||||
private String profileDb;
|
||||
|
||||
public String getRefreshToken() {
|
||||
return refreshToken;
|
||||
@@ -22,13 +21,4 @@ public class RefreshRequestDTO {
|
||||
this.profileDb = profileDb;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
public RefreshRequestDTO setDeviceId(String deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,8 +90,8 @@ public class AccessTokenProvider implements InitializingBean {
|
||||
HashMap<?, ?> detailsHashMap = (HashMap<?, ?>) claims.get("details");
|
||||
AuthTokenDetails authTokenDetails = null;
|
||||
|
||||
if(detailsHashMap != null && !detailsHashMap.isEmpty()) {
|
||||
authTokenDetails = jsonObjectMapper.convertValue(detailsHashMap, AuthTokenDetails.class);
|
||||
if (detailsHashMap != null && !detailsHashMap.isEmpty()) {
|
||||
authTokenDetails = jsonObjectMapper.convertValue(detailsHashMap, AuthTokenDetails.class);
|
||||
}
|
||||
|
||||
|
||||
@@ -102,20 +102,14 @@ public class AccessTokenProvider implements InitializingBean {
|
||||
}
|
||||
|
||||
public boolean validateToken(String profileDb, String token) {
|
||||
try {
|
||||
String dbName = settingsModel.getDbNameFromProfileDb(profileDb);
|
||||
final Jws<Claims> claimsJws = Jwts
|
||||
.parserBuilder()
|
||||
.setSigningKey(this.secretKeyCacheComponent.getKey(dbName))
|
||||
.build()
|
||||
.parseClaimsJws(token);
|
||||
String dbName = settingsModel.getDbNameFromProfileDb(profileDb);
|
||||
final Jws<Claims> claimsJws = Jwts
|
||||
.parserBuilder()
|
||||
.setSigningKey(this.secretKeyCacheComponent.getKey(dbName))
|
||||
.build()
|
||||
.parseClaimsJws(token);
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
logger.error("Token non valido.", e);
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public Date getTokenExpiryFromJWT(String profileDb, String token) {
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
package it.integry.security.jwt;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.jsonwebtoken.ExpiredJwtException;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.system.GlobalExceptionHandler;
|
||||
import it.integry.ems_model.entity.StbAuthToken;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import it.integry.security.cache.JwtTokenCacheComponent;
|
||||
import it.integry.security.dto.AuthTokenDetails;
|
||||
import it.integry.security.exception.InvalidTokenException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -22,7 +23,9 @@ import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
public class JWTFilter extends GenericFilterBean {
|
||||
public static final String AUTHORIZATION_HEADER = "Authorization";
|
||||
@@ -35,12 +38,21 @@ public class JWTFilter extends GenericFilterBean {
|
||||
public JWTFilter(AccessTokenProvider accessTokenProvider, JwtTokenCacheComponent tokenCache) {
|
||||
this.accessTokenProvider = accessTokenProvider;
|
||||
this.tokenCache = tokenCache;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initFilterBean() throws ServletException {
|
||||
super.initFilterBean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
|
||||
throws IOException, ServletException {
|
||||
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
|
||||
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
|
||||
|
||||
String token = resolveToken(httpServletRequest);
|
||||
String profileDb = resolveProfileDb(httpServletRequest);
|
||||
|
||||
@@ -49,7 +61,7 @@ public class JWTFilter extends GenericFilterBean {
|
||||
if (accessTokenProvider.validateToken(profileDb, token)) {
|
||||
|
||||
StbAuthToken stbAuthToken = tokenCache.getTokenByAccessToken(profileDb, token);
|
||||
if(stbAuthToken == null)
|
||||
if (stbAuthToken == null)
|
||||
throw new InvalidTokenException(token);
|
||||
|
||||
|
||||
@@ -58,8 +70,9 @@ public class JWTFilter extends GenericFilterBean {
|
||||
|
||||
logger.debug("Set Authentication to security context for '{}'.", authenticationToken.getName());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("Ricevuta richiesta jwt non valida", e);
|
||||
} catch (Exception ex) {
|
||||
handleException(ex, httpServletRequest, httpServletResponse);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +80,35 @@ public class JWTFilter extends GenericFilterBean {
|
||||
}
|
||||
|
||||
|
||||
private void handleException(Exception ex, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
|
||||
logger.error("JWT Token non valido", ex);
|
||||
|
||||
ServiceRestResponse errorObject = null;
|
||||
GlobalExceptionHandler globalExceptionHandler = ContextLoader.getCurrentWebApplicationContext().getBean(GlobalExceptionHandler.class);
|
||||
|
||||
if (ex instanceof ExpiredJwtException) {
|
||||
ExpiredJwtException expiredJwtException = (ExpiredJwtException) ex;
|
||||
|
||||
errorObject = globalExceptionHandler.handleException(
|
||||
httpServletRequest,
|
||||
httpServletResponse,
|
||||
new AccessDeniedException("Session expired", expiredJwtException.getCause()));
|
||||
} else {
|
||||
errorObject = globalExceptionHandler.handleException(
|
||||
httpServletRequest,
|
||||
httpServletResponse,
|
||||
ex);
|
||||
}
|
||||
|
||||
httpServletResponse.setContentType("application/json");
|
||||
|
||||
//pass down the actual obj that exception handler normally send
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
PrintWriter out = httpServletResponse.getWriter();
|
||||
out.print(mapper.writeValueAsString(errorObject));
|
||||
out.flush();
|
||||
}
|
||||
|
||||
private String resolveToken(HttpServletRequest request) {
|
||||
String bearerToken = request.getHeader(AUTHORIZATION_HEADER);
|
||||
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
package it.integry.security.service;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import it.integry.ems.exception.AuthorizationExpriredException;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.settings.Model.AvailableConnectionsModel;
|
||||
import it.integry.ems.settings.Model.SettingsModel;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.user.UserCacheService;
|
||||
import it.integry.ems.user.dto.UserDTO;
|
||||
import it.integry.ems.user.service.UserCacheService;
|
||||
import it.integry.ems.user.service.UserService;
|
||||
import it.integry.ems_model.entity.StbAuthToken;
|
||||
import it.integry.ems_model.entity.StbDevices;
|
||||
import it.integry.ems_model.entity.StbUser;
|
||||
@@ -29,7 +27,6 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -39,6 +36,8 @@ public class AuthService {
|
||||
@Autowired
|
||||
private UserCacheService userCacheService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
@Autowired
|
||||
private SettingsModel settingsModel;
|
||||
@Autowired
|
||||
private MultiDBTransactionManager multiDBTransactionManager;
|
||||
@@ -81,55 +80,8 @@ public class AuthService {
|
||||
|
||||
userData.setUser(this.getUser(username, password, multiDBTransactionManager));
|
||||
} else {
|
||||
List<String> profiles;
|
||||
|
||||
profiles = userCacheService.retrieveProfilesOfUserByUsername(username);
|
||||
|
||||
if (profiles.isEmpty()) {
|
||||
// SELEZIONE CICLICA IN TUTTI I DB SPECIFICATI
|
||||
profiles = Stream.of(settingsModel.getAvailableConnections())
|
||||
.filter(x -> x.getInternalDb() && x.getProfileName().equalsIgnoreCase(x.getDbName()))
|
||||
.map(AvailableConnectionsModel::getProfileName)
|
||||
.toList();
|
||||
}
|
||||
|
||||
if (profiles.isEmpty()) {
|
||||
profiles = Stream.of(settingsModel.getAvailableConnections())
|
||||
.filter(AvailableConnectionsModel::getInternalDb)
|
||||
.distinctBy(AvailableConnectionsModel::getDbName)
|
||||
.map(AvailableConnectionsModel::getProfileName)
|
||||
.toList();
|
||||
}
|
||||
|
||||
List<String> profilesWhereUserFound = new ArrayList<>();
|
||||
|
||||
for (String profile : profiles) {
|
||||
multiDBTransactionManager.closeAll();
|
||||
multiDBTransactionManager.setPrimaryDs(profile);
|
||||
|
||||
try {
|
||||
StbUser tmpUserData = this.getUser(username, password, multiDBTransactionManager);
|
||||
|
||||
if (tmpUserData != null) {
|
||||
UserDTO userDTO = new UserDTO()
|
||||
.setUsername(tmpUserData.getUsername())
|
||||
.setEmail(tmpUserData.geteMail())
|
||||
.setFullname(tmpUserData.getFullName())
|
||||
.setType("web")
|
||||
.setAttivo("S".equalsIgnoreCase(tmpUserData.getFlagAttivo()));
|
||||
|
||||
userCacheService.cache(profile, userDTO);
|
||||
|
||||
userData.setUser(tmpUserData);
|
||||
|
||||
profilesWhereUserFound.add(profile);
|
||||
}
|
||||
} finally {
|
||||
multiDBTransactionManager.closeAll();
|
||||
}
|
||||
}
|
||||
|
||||
userData.setAvailableProfiles(profilesWhereUserFound);
|
||||
List<String> profiles = userService.retrieveAvailableProfiles(username);
|
||||
userData.setAvailableProfiles(profiles);
|
||||
}
|
||||
|
||||
if (userData.getUser() == null) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.service.MailService;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.system.user.service.UserService;
|
||||
import it.integry.ems.user.service.UserService;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.entity.JtbGiustifica;
|
||||
import it.integry.ems_model.entity.JtbRLavt;
|
||||
|
||||
@@ -9,8 +9,8 @@ import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.system.service.SystemService;
|
||||
import it.integry.ems.system.user.service.UserService;
|
||||
import it.integry.ems.user.dto.UserDTO;
|
||||
import it.integry.ems.user.service.UserService;
|
||||
import it.integry.ems.utility.service.UtilityService;
|
||||
import it.integry.ems_model.entity.JtbRLavr;
|
||||
import it.integry.ems_model.entity.JtbRLavt;
|
||||
|
||||
@@ -27,7 +27,7 @@ public class MenuService {
|
||||
|
||||
public StbMenu retrieveMenuConfig(String rootCodOpz) throws Exception {
|
||||
|
||||
if (!requestDataDTO.isValidUsername() || !requestDataDTO.isValidPassword()) {
|
||||
if (!requestDataDTO.isValidUsername()) {
|
||||
throw new UsernameNotFoundException("Utente " + requestDataDTO.getUsername() + " non riconoscuto!");
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,7 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import it.integry.common.var.CommonConstants;
|
||||
import it.integry.ems.contabil.fatture.exceptions.InvoiceProcessException;
|
||||
import it.integry.ems.datasource.DataSource;
|
||||
import it.integry.ems.export.enums.EntityExportType;
|
||||
import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.license.LicenseStatusDTO;
|
||||
import it.integry.ems.media.MediaImageService;
|
||||
@@ -34,9 +32,9 @@ import it.integry.ems.system.dto.GestioniPvmDTO;
|
||||
import it.integry.ems.system.dto.TreeDTO;
|
||||
import it.integry.ems.system.request.SystemChangePasswordRequest;
|
||||
import it.integry.ems.system.request.SystemLoginRequest;
|
||||
import it.integry.ems.user.UserCacheService;
|
||||
import it.integry.ems.user.dto.UserDTO;
|
||||
import it.integry.ems.user.dto.UserWPasswordDTO;
|
||||
import it.integry.ems.user.service.UserCacheService;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems.utility.UtilityFile;
|
||||
@@ -55,11 +53,8 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.docx4j.Docx4J;
|
||||
import org.docx4j.openpackaging.exceptions.Docx4JException;
|
||||
import org.docx4j.openpackaging.packages.Filetype;
|
||||
import org.docx4j.openpackaging.packages.OpcPackage;
|
||||
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
|
||||
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
|
||||
import org.docx4j.wml.P;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
|
||||
<Console name="console" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
|
||||
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} [%c{1}] %msg%n"/>
|
||||
</Console>
|
||||
</Appenders>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user