package net.tooan.ynpay.commons.webapp.interceptor;
import net.tooan.ynpay.commons.YnpayJndiConstants;
import net.tooan.ynpay.third.jfinal.aop.Interceptor;
import net.tooan.ynpay.third.jfinal.core.ActionInvocation;
import net.tooan.ynpay.third.jfinal.core.Controller;
import net.tooan.ynpay.third.jfinal.ext.interceptor.ejb.EJBManager;
import net.tooan.ynpay.third.jfinal.ext.interceptor.ejb.RemoteEJB;
import net.tooan.ynpay.user.agent.facade.SessionFacade;
import org.apache.commons.lang.StringUtils;
/**
* Created with IntelliJ IDEA.
* User: Jing
* Date: 13-10-23
* Time: 下午4:12
*/
public class SsoInterceptor implements Interceptor {
@RemoteEJB(mappedName = YnpayJndiConstants.Mongo_Session_Facade_Remote)
private SessionFacade facade;
public SsoInterceptor() {
super();
EJBManager.manager.setEJB(this);
}
@Override
public void intercept(ActionInvocation ai) {
Controller controller = ai.getController();
String token = StringUtils.defaultIfBlank(controller.getCookie("_ynpay_token_"), controller.getRequest().getHeader("Authorization"));
if (StringUtils.isNotBlank(token)) {
try {
controller.setAttr("user", facade.getByToken(token).getUser());
} catch (Exception e) {
controller.removeAttr("user");
controller.getRequest().getSession().invalidate();
}
}
ai.invoke();
}
}