@ -1,55 +1,51 @@
package com.mfsys.aconnect.usermanagement.filter ;
import com.mfsys.common.configuration.constant.FilterPriority ;
import com.mfsys.common.configuration.constant.TokenBypassURI ;
import com.mfsys.aconnect.configuration.service.RequestRateLimiterService ;
import com.mfsys.aconnect.usermanagement.model.Role ;
import com.mfsys.aconnect.usermanagement.model.User ;
import com.mfsys.aconnect.usermanagement.model.UserSubscription ;
import com.mfsys.aconnect.usermanagement.service.UserService ;
import com.mfsys.aconnect.usermanagement.service.UserSubscriptionService ;
import jakarta.servlet.FilterChain ;
import jakarta.servlet.ServletException ;
import jakarta.servlet.http.HttpServletRequest ;
import jakarta.servlet.http.HttpServletResponse ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.core.annotation.Order ;
import org.springframework.stereotype.Component ;
import org.springframework.web.filter.OncePerRequestFilter ;
import java.io.IOException ;
@Component
@Order ( FilterPriority . SUBSCRIPTION )
public class SubscriptionFilter extends OncePerRequestFilter {
private final UserService userService ;
private final UserSubscriptionService userSubscriptionService ;
private final RequestRateLimiterService requestRateLimiterService ;
@Autowired
public SubscriptionFilter ( UserService userService , UserSubscriptionService userSubscriptionService ,
RequestRateLimiterService requestRateLimiterService ) {
this . userService = userService ;
this . userSubscriptionService = userSubscriptionService ;
this . requestRateLimiterService = requestRateLimiterService ;
}
@Override
protected void doFilterInternal ( HttpServletRequest request , HttpServletResponse response , FilterChain filterChain )
throws ServletException , IOException {
// TODO: For porOrga-change we Will removed it later
if ( ! ( request . getMethod ( ) . equals ( "OPTIONS" ) ) ) {
System . out . println ( ">> " + request . getRequestURI ( ) + " <<" ) ;
// TODO:
// important add all mconnect url in tokenbypass uri and remove this if
// condition or implement jwt in mconnect module
System . out . println ( request . getHeaderNames ( ) ) ;
if ( ! ( TokenBypassURI . URIs . contains ( request . getRequestURI ( ) ) | | request . getRequestURI ( ) . startsWith ( "/MCONNECT/actuator" ) ) ) {
String userId = request . getHeader ( "userId" ) ;
User user = userService . findActiveUserById ( userId )
. orElseThrow ( ( ) - > new RuntimeException ( "Invalid credentials" ) ) ;
//package com.mfsys.aconnect.usermanagement.filter;
//
//import com.mfsys.common.configuration.constant.FilterPriority;
//import com.mfsys.common.configuration.constant.TokenBypassURI;
//import com.mfsys.aconnect.configuration.service.RequestRateLimiterService;
//import com.mfsys.aconnect.usermanagement.model.Role;
//import com.mfsys.aconnect.usermanagement.model.User;
//import com.mfsys.aconnect.usermanagement.model.UserSubscription;
//import com.mfsys.aconnect.usermanagement.service.UserService;
//import com.mfsys.aconnect.usermanagement.service.UserSubscriptionService;
//import jakarta.servlet.FilterChain;
//import jakarta.servlet.ServletException;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.core.annotation.Order;
//import org.springframework.stereotype.Component;
//import org.springframework.web.filter.OncePerRequestFilter;
//
//import java.io.IOException;
//
//@Component
//@Order(FilterPriority.SUBSCRIPTION)
//public class SubscriptionFilter extends OncePerRequestFilter {
//
// private final UserService userService;
// private final UserSubscriptionService userSubscriptionService;
// private final RequestRateLimiterService requestRateLimiterService;
//
// @Autowired
// public SubscriptionFilter(UserService userService, UserSubscriptionService userSubscriptionService,
// RequestRateLimiterService requestRateLimiterService) {
// this.userService = userService;
// this.userSubscriptionService = userSubscriptionService;
// this.requestRateLimiterService = requestRateLimiterService;
// }
//
// @Override
// protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
// throws ServletException, IOException {
// if (!(request.getMethod().equals("OPTIONS"))) {
//
// System.out.println(">> " + request.getRequestURI() + " <<");
// System.out.println(request.getHeaderNames());
// if (!(TokenBypassURI.URIs.contains(request.getRequestURI()) || request.getRequestURI().startsWith("/MCONNECT/actuator"))) {
// String userId = request.getHeader("userId");
// User user = userService.findActiveUserById(userId)
// .orElseThrow(() -> new RuntimeException("Invalid credentials"));
// if(user.getRole().equals(Role.USER)){
// UserSubscription userSubscription = userSubscriptionService.findByUserIdAndEndpointPath(userId, request.getRequestURI())
// .orElseThrow(() -> new RuntimeException("No Active Subscription"));
@ -60,9 +56,9 @@ public class SubscriptionFilter extends OncePerRequestFilter {
// throw new RuntimeException("Too many requests");
// }
// }
}
filterChain . doFilter ( request , response ) ;
}
}
}
// }
//
// filterChain.doFilter(request, response);
// }
// }
//}