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

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

Fixing security configuration

  • 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("ADMIN", "/date");
28 roleTargetUrlMap.put("CUSTOMER", "/number");
29 roleTargetUrlMap.put("BUSINESS_OWNER", "");
30 SecurityContextImpl sci = (SecurityContextImpl) session.getAttribute("SPRING_SECURITY_CONTEXT");
31 if(sci != null) {
32 UserDetails userDetails = (UserDetails) sci.getAuthentication().getPrincipal();
33 final Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
34 for (final GrantedAuthority grantedAuthority : authorities) {
35 String authorityName = grantedAuthority.getAuthority();
36 if("DATE".equalsIgnoreCase(authorityName)) {
37 servletRequest.getRequestDispatcher("date").forward(servletRequest, servletResponse);
38 return;
39 } else if("GUESS_NUMBER".equalsIgnoreCase(authorityName)) {
40 try {
41 servletRequest.getRequestDispatcher("number").forward(servletRequest, servletResponse);
42 } catch (Exception e) {
43 e.printStackTrace();
44 }
45
46 return;
47 }
48 }
49 }
50 }
51 filterChain.doFilter(servletRequest, servletResponse);
52 }
53}
Note: See TracBrowser for help on using the repository browser.