| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 
 |  
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
 
public class AccesFilter implements Filter {
...
 
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
 
 
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
 
 
        HttpSession session = (HttpSession) request.getSession();
 
        // utilisateur connu ?
        Utilisateur utilisateur = (Utilisateur) session.getAttribute(Utilisateur.UTILISATEUR);
        boolean droitsOk = false;
 
 
        if (utilisateur != null) {
 
            String path = request.getRequestURI().substring(request.getContextPath().length());
                        // les URl sont du type /agent/action.xhtml , /admin/action.xhtml, ...
            if (path.contains("/agent/")) {
                if (utilisateur.isAgent())     {
                    droitsOk = true;
                }
            }
            if (path.contains("/admin/")) {
                if (utilisateur.isAdmin()) {
                    droitsOk = true;
                }
            }
        }
 
 
        if (droitsOk) { // on pousuit la requête
            chain.doFilter(req, res);
        } else { // oops, redirection
            response.sendRedirect(request.getContextPath() + redirectionAccesDroitsInsuffisantsUrl);
        }
 
 
    } |