source: src/main/java/edu/gjoko/schedlr/config/AppFilter.java@ 46fd0c7

Last change on this file since 46fd0c7 was 46fd0c7, checked in by Gjoko Kostadinov <gjoko.kostadinov@…>, 16 months ago

Add admin page initial work.

  • Property mode set to 100644
File size: 2.8 KB
Line 
1package edu.gjoko.schedlr.config;
2
3import org.springframework.security.core.GrantedAuthority;
4import org.springframework.security.core.context.SecurityContextImpl;
5import org.springframework.security.core.userdetails.UserDetails;
6import org.springframework.util.StringUtils;
7import org.springframework.web.filter.GenericFilterBean;
8
9import javax.servlet.FilterChain;
10import javax.servlet.ServletException;
11import javax.servlet.ServletRequest;
12import javax.servlet.ServletResponse;
13import javax.servlet.http.HttpServletRequest;
14import javax.servlet.http.HttpSession;
15import java.io.IOException;
16import java.util.Collection;
17import java.util.HashMap;
18import java.util.Map;
19
20public class AppFilter extends GenericFilterBean {
21 @Override
22 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
23 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
24 HttpSession session = httpServletRequest.getSession(false);
25
26 if(httpServletRequest.getRequestURI().endsWith(".js") || httpServletRequest.getRequestURI().endsWith(".css")) {
27 filterChain.doFilter(servletRequest, servletResponse);
28 return;
29 }
30 if(session != null) {
31 Map<String, String> roleTargetUrlMap = new HashMap<>();
32 roleTargetUrlMap.put("ADMIN", "/admin");
33 roleTargetUrlMap.put("CUSTOMER", "/homepage");
34 roleTargetUrlMap.put("BUSINESS_OWNER", "/business_homepage");
35 SecurityContextImpl sci = (SecurityContextImpl) session.getAttribute("SPRING_SECURITY_CONTEXT");
36 if(sci != null) {
37 UserDetails userDetails = (UserDetails) sci.getAuthentication().getPrincipal();
38 final Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
39 for (final GrantedAuthority grantedAuthority : authorities) {
40 String authorityName = grantedAuthority.getAuthority();
41 String page = "";
42 switch (authorityName) {
43 case "ADMIN":
44 page = "/admin";
45 break;
46 case "CUSTOMER":
47 case "BUSINESS_OWNER":
48 page = "/homepage";
49 break;
50 default:
51 break;
52 }
53 if(page != null && !page.trim().isEmpty()) {
54 servletRequest.getRequestDispatcher(page).forward(servletRequest, servletResponse);
55 return;
56 }
57 }
58 }
59 }
60 filterChain.doFilter(servletRequest, servletResponse);
61 }
62}
Note: See TracBrowser for help on using the repository browser.