1 16 17 package info.jtrac.acegi; 18 19 import info.jtrac.Jtrac; 20 import info.jtrac.domain.Space; 21 import info.jtrac.domain.User; 22 import info.jtrac.util.UserUtils; 23 import java.io.IOException ; 24 import java.util.List ; 25 import javax.servlet.Filter ; 26 import javax.servlet.FilterChain ; 27 import javax.servlet.FilterConfig ; 28 import javax.servlet.ServletException ; 29 import javax.servlet.ServletRequest ; 30 import javax.servlet.ServletResponse ; 31 import javax.servlet.http.HttpServletRequest ; 32 import javax.servlet.http.HttpServletResponse ; 33 import org.acegisecurity.context.SecurityContextHolder; 34 import org.acegisecurity.ui.AuthenticationDetailsSource; 35 import org.acegisecurity.ui.AuthenticationDetailsSourceImpl; 36 import org.apache.commons.logging.Log; 37 import org.apache.commons.logging.LogFactory; 38 39 45 public class GuestProcessingFilter implements Filter { 46 47 private Jtrac jtrac; 48 private AuthenticationDetailsSource authenticationDetailsSource = new AuthenticationDetailsSourceImpl(); 49 50 public void setJtrac(Jtrac jtrac) { 51 this.jtrac = jtrac; 52 } 53 54 private final Log logger = LogFactory.getLog(getClass()); 55 56 public void init(FilterConfig filterConfig) { 57 } 59 60 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException , ServletException { 61 if (SecurityContextHolder.getContext().getAuthentication() == null) { 62 List <Space> spaces = jtrac.findSpacesWhereGuestAllowed(); 63 if (spaces.size() > 0) { 64 User guestUser = new User(); 65 guestUser.setLoginName("guest"); 66 guestUser.setName("Guest"); 67 guestUser.addSpaceWithRole(null, "ROLE_GUEST"); 68 for (Space space : spaces) { 69 guestUser.addSpaceWithRole(space, "ROLE_GUEST"); 70 } 71 GuestAuthenticationToken authentication = new GuestAuthenticationToken(guestUser, guestUser.getAuthorities()); 72 authentication.setDetails(authenticationDetailsSource.buildDetails((HttpServletRequest ) request)); 73 SecurityContextHolder.getContext().setAuthentication(authentication); 74 if (logger.isDebugEnabled()) { 75 logger.debug("populated SecurityContextHolder with guest user: " + guestUser); 76 } 77 request.setAttribute("principal", authentication.getPrincipal()); 79 UserUtils.refreshLocale((HttpServletRequest ) request, (HttpServletResponse ) response, jtrac.getDefaultLocale()); 80 } 81 } 82 chain.doFilter(request, response); 83 } 84 85 public void destroy() { 86 } 88 89 } 90 | Popular Tags |