fix authentication
This commit is contained in:
		| @@ -54,7 +54,7 @@ public class JwtRequestFilter extends OncePerRequestFilter { | ||||
|  | ||||
| 	private void isValidToken(HttpServletRequest request, String jwtToken) { | ||||
| 		String requestUrl = request.getRequestURI(); | ||||
| 		String refreshTokenUrl = "/authentication-service/authentication/v1/refresh-token"; | ||||
| 		String refreshTokenUrl = "/api/authentication/refresh-token"; | ||||
| 		if (!refreshTokenUrl.equals(requestUrl)) { | ||||
| 			var isValid = isValidAuthenticateToken(jwtToken); | ||||
| 			if (!isValid) { | ||||
|   | ||||
| @@ -34,6 +34,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||||
| 				.csrf().disable(); | ||||
| 		httpSecurity.authorizeRequests() | ||||
| 				.antMatchers("/api*/**").permitAll() | ||||
| 				.antMatchers("/api/authentication/*").permitAll() | ||||
| 				.antMatchers("/actuator/health").permitAll() | ||||
| 				.antMatchers("/swagger*/**").permitAll() | ||||
| 				.antMatchers("/v2*/**").permitAll() | ||||
|   | ||||
| @@ -31,12 +31,10 @@ public class TokenManagement extends BaseEntity { | ||||
|     @Column(name = "user_id") | ||||
|     private Long userId; | ||||
|  | ||||
|     @Lob | ||||
|     @Column(name = "access_token") | ||||
|     @Column(name = "access_token", length = 2500) | ||||
|     private String accessToken; | ||||
|  | ||||
|     @Lob | ||||
|     @Column(name = "refresh_token") | ||||
|     @Column(name = "refresh_token", length = 2500) | ||||
|     private String refreshToken; | ||||
|  | ||||
|     @Column(name = "issued_time") | ||||
|   | ||||
| @@ -7,10 +7,10 @@ public interface TokenManagementView { | ||||
|     String getId(); | ||||
|     void setId(String id); | ||||
|  | ||||
|     String getUserId(); | ||||
|     void setUserId(String userId); | ||||
|     Long getUserId(); | ||||
|     void setUserId(Long userId); | ||||
|  | ||||
|     Clob getAccessToken(); | ||||
|     void setAccessToken(Clob accessToken); | ||||
|     String getAccessToken(); | ||||
|     void setAccessToken(String accessToken); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -14,9 +14,9 @@ public interface TokenManagementRepository extends JpaRepository<TokenManagement | ||||
|  | ||||
|     @Query(value = "SELECT access_token as accessToken FROM token_management " + | ||||
|             "WHERE user_id = :userId " + | ||||
|             "AND isDelete = false " + | ||||
|             "AND expired_time >= SYSDATE", nativeQuery = true) | ||||
|     List<TokenManagementView> findAccessTokenByUserIdAndDeletedFalse(String userId); | ||||
|             "AND is_delete = 0 " + | ||||
|             "AND expired_time >= CURRENT_TIMESTAMP", nativeQuery = true) | ||||
|     List<TokenManagementView> findAccessTokenByUserIdAndDeletedFalse(Long userId); | ||||
|  | ||||
|     @Query(value = "SELECT tm from TokenManagement tm " + | ||||
|             "WHERE tm.refreshToken = :refreshToken " + | ||||
|   | ||||
| @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.Map; | ||||
|  | ||||
| @Service | ||||
| @@ -65,7 +66,7 @@ public class LoginService implements BaseService<LoginRequest, LoginResponse> { | ||||
|                 .username(userRoleView.getUsername()) | ||||
|                 .nama(userRoleView.getNama()) | ||||
|                 .role(userRoleView.getRole()) | ||||
|                 .accessMenu(null) | ||||
|                 .accessMenu(new HashSet<>()) | ||||
|                 .build(); | ||||
|  | ||||
|         Map<String, Object> claims = new HashMap<>(); | ||||
|   | ||||
| @@ -27,7 +27,7 @@ public class PostCheckAccessTokenService implements BaseService<PostAccessTokenR | ||||
|     public PostAccessTokenResponse execute(PostAccessTokenRequest input) { | ||||
|  | ||||
|         var decodeToken = TokenUtils.decodeToken(input.getAccessToken()); | ||||
|         String userId = decodeToken.get("user_id"); | ||||
|         Long userId = Long.valueOf(decodeToken.get("user_id")); | ||||
|  | ||||
|         List<TokenManagementView> tokenManagementViews = tokenManagementRepository.findAccessTokenByUserIdAndDeletedFalse(userId); | ||||
|         if (tokenManagementViews.isEmpty()) { | ||||
| @@ -38,7 +38,7 @@ public class PostCheckAccessTokenService implements BaseService<PostAccessTokenR | ||||
|         } | ||||
|  | ||||
|         List<String> userTokenList = tokenManagementViews.stream() | ||||
|                 .map(c-> CommonUtil.clobToString(c.getAccessToken())) | ||||
|                 .map(TokenManagementView::getAccessToken) | ||||
|                 .collect(Collectors.toList()); | ||||
|  | ||||
|         boolean isMatch = userTokenList.stream().anyMatch(s -> s.equals(input.getAccessToken())); | ||||
|   | ||||
| @@ -17,6 +17,7 @@ import org.springframework.http.HttpStatus; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.util.Objects; | ||||
|  | ||||
| @Service | ||||
| @@ -72,7 +73,7 @@ public class TokenManagementService implements BaseService<RefreshTokenRequest, | ||||
|                 .username(userRoleView.getUsername()) | ||||
|                 .nama(userRoleView.getNama()) | ||||
|                 .role(userRoleView.getRole()) | ||||
|                 .accessMenu(null) | ||||
|                 .accessMenu(new HashSet<>()) | ||||
|                 .build(); | ||||
|  | ||||
|         final String accessToken = jwtTokenUtil.generateToken(String.valueOf(userRoleView.getId()), tokenContent, accessTokenExp * 60000); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user