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

Last change on this file since cf9cdbf was cf9cdbf, checked in by Gjoko <goko_kostadinov@…>, 21 months ago

Initial commit.

  • Property mode set to 100644
File size: 2.4 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.web.filter.GenericFilterBean;
7
8import javax.servlet.FilterChain;
9import javax.servlet.ServletException;
10import javax.servlet.ServletRequest;
11import javax.servlet.ServletResponse;
12import javax.servlet.http.HttpServletRequest;
13import javax.servlet.http.HttpSession;
14import java.io.IOException;
15import java.util.Collection;
16import java.util.HashMap;
17import java.util.Map;
18
19public class AppFilter extends GenericFilterBean {
20 @Override
21 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
22 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
23 HttpSession session = httpServletRequest.getSession(false);
24
25 if(session != null) {
26 Map<String, String> roleTargetUrlMap = new HashMap<>();
27 roleTargetUrlMap.put("DATE", "/date");
28 roleTargetUrlMap.put("GUESS_NUMBER", "/number");
29 SecurityContextImpl sci = (SecurityContextImpl) session.getAttribute("SPRING_SECURITY_CONTEXT");
30 if(sci != null) {
31 UserDetails userDetails = (UserDetails) sci.getAuthentication().getPrincipal();
32 final Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
33 for (final GrantedAuthority grantedAuthority : authorities) {
34 String authorityName = grantedAuthority.getAuthority();
35 if("DATE".equalsIgnoreCase(authorityName)) {
36 servletRequest.getRequestDispatcher("date").forward(servletRequest, servletResponse);
37 return;
38 } else if("GUESS_NUMBER".equalsIgnoreCase(authorityName)) {
39 try {
40 servletRequest.getRequestDispatcher("number").forward(servletRequest, servletResponse);
41 } catch (Exception e) {
42 e.printStackTrace();
43 }
44
45 return;
46 }
47 }
48 }
49 }
50 filterChain.doFilter(servletRequest, servletResponse);
51 }
52}
Note: See TracBrowser for help on using the repository browser.