Ignore:
Timestamp:
04/19/23 21:19:08 (15 months ago)
Author:
Gjoko Kostadinov <gjoko.kostadinov@…>
Branches:
master
Children:
950fa0d
Parents:
9050790
Message:

Add admin functionality and business admin functionality.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/edu/gjoko/schedlr/config/AppFilter.java

    r9050790 r8bcd64c  
    11package edu.gjoko.schedlr.config;
    22
     3import edu.gjoko.schedlr.services.PostgresUserDetailsService;
     4import lombok.RequiredArgsConstructor;
    35import org.springframework.security.core.GrantedAuthority;
    46import org.springframework.security.core.context.SecurityContextImpl;
    57import org.springframework.security.core.userdetails.UserDetails;
    68import org.springframework.util.StringUtils;
     9import org.springframework.web.bind.annotation.RequestBody;
    710import org.springframework.web.filter.GenericFilterBean;
    811
     
    1215import javax.servlet.ServletResponse;
    1316import javax.servlet.http.HttpServletRequest;
     17import javax.servlet.http.HttpServletResponse;
    1418import javax.servlet.http.HttpSession;
    1519import java.io.IOException;
     
    1822import java.util.Map;
    1923
     24@RequiredArgsConstructor
    2025public class AppFilter extends GenericFilterBean {
     26
     27    private final PostgresUserDetailsService userDetailsService;
    2128    @Override
    2229    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    2330        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
    2431        HttpSession session = httpServletRequest.getSession(false);
     32        HttpServletResponse response = (HttpServletResponse) servletResponse;
    2533
    2634        if(httpServletRequest.getRequestURI().endsWith(".js")
    27                 || httpServletRequest.getRequestURI().endsWith(".css")
    28                 || httpServletRequest.getRequestURI().startsWith("/api")) {
     35                || httpServletRequest.getRequestURI().endsWith(".css")) {
    2936            filterChain.doFilter(servletRequest, servletResponse);
    3037            return;
    3138        }
     39
     40        if(httpServletRequest.getRequestURI().startsWith("/api")) {
     41            session = ((HttpServletRequest) servletRequest).getSession(true);
     42            SecurityContextImpl sci = (SecurityContextImpl) session.getAttribute("SPRING_SECURITY_CONTEXT");
     43
     44            if(sci != null && session.getAttribute("stakeholderId") == null) {
     45                UserDetails userDetails = (UserDetails) sci.getAuthentication().getPrincipal();
     46                Long stakeholderId = userDetailsService.loadStakeholderId(userDetails.getUsername());
     47                session.setAttribute("stakeholderId", stakeholderId);
     48            }
     49            filterChain.doFilter(servletRequest, servletResponse);
     50            return;
     51        }
     52
    3253        if(session != null) {
    33             Map<String, String> roleTargetUrlMap = new HashMap<>();
    34             roleTargetUrlMap.put("ADMIN", "/admin");
    35             roleTargetUrlMap.put("CUSTOMER", "/homepage");
    36             roleTargetUrlMap.put("BUSINESS_OWNER", "/business_homepage");
    3754            SecurityContextImpl sci = (SecurityContextImpl) session.getAttribute("SPRING_SECURITY_CONTEXT");
    3855            if(sci != null) {
    3956                UserDetails userDetails = (UserDetails) sci.getAuthentication().getPrincipal();
     57                Long stakeholderId = userDetailsService.loadStakeholderId(userDetails.getUsername());
     58                session.setAttribute("stakeholderId", stakeholderId);
     59
    4060                final Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
    4161                for (final GrantedAuthority grantedAuthority : authorities) {
     
    4767                            break;
    4868                        case "CUSTOMER":
     69                            page = "/homepage";
     70                            break;
    4971                        case "BUSINESS_OWNER":
    50                             page = "/homepage";
     72                            page = "/business_admin";
    5173                            break;
    5274                        default:
Note: See TracChangeset for help on using the changeset viewer.