package com.opentravelsoft.webapp.interceptor; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opentravelsoft.common.SessionKeyParams; import com.opentravelsoft.entity.Member; import com.opentravelsoft.service.UserManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; public class UserInfoInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1729368460754400272L; protected static final Log logger = LogFactory .getLog(UserInfoInterceptor.class); @Autowired private UserManager userManager; public String intercept(ActionInvocation invocation) throws Exception { logger.debug("intercepter user info."); ActionContext act = invocation.getInvocationContext(); Map<String, Object> session = act.getSession(); // ------------------------------------------------------------------------- Authentication authent = SecurityContextHolder.getContext() .getAuthentication(); User currentUser = null; if (authent.getPrincipal() instanceof UserDetails) { currentUser = (User) authent.getPrincipal(); } else if (authent.getDetails() instanceof UserDetails) { currentUser = (User) authent.getDetails(); } else { // throw new AccessDeniedException("User not properly authenticated."); } // ------------------------------------------------------------------------- Object suser = session.get(SessionKeyParams.EBIZ_USER); if (null != currentUser && null == suser) { Member user = userManager.getUserByUsername(currentUser.getUsername() .toUpperCase()); session.put(SessionKeyParams.EBIZ_USER, user); } return invocation.invoke(); } /** * This method currently does nothing. */ public void destroy() { } /** * This method currently does nothing. */ public void init() { } }