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