package net.tooan.ynpay.manage.webapp.interceptor;
import net.tooan.ynpay.commons.webapp.RestfulStatus;
import net.tooan.ynpay.commons.webapp.json.Result;
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.user.agent.UserConstants;
import net.tooan.ynpay.user.agent.bean.User;
import org.apache.commons.lang.StringUtils;
/**
* Created with IntelliJ IDEA.
* User: Jing
* Date: 13-10-24
* Time: 下午12:52
*/
public class AuthInterceptor implements Interceptor {
private Result json = new Result();
@Override
public void intercept(ActionInvocation ai) {
Controller controller = ai.getController();
User user = controller.getAttr("user");
Boolean isRestful = StringUtils.startsWith(ai.getControllerKey(), "/restful/");
if (user == null) {
next(controller, isRestful);
} else {
if (user.getType() == UserConstants.administrator) {
if (controller.getSessionAttr("administrator", false)) {
ai.invoke();
} else {
next(controller, isRestful);
}
} else {
next(controller, isRestful);
}
}
}
private void next(Controller controller, Boolean isRestful) {
if (isRestful) {
json.setMessage(RestfulStatus.Unauthorized_Code, RestfulStatus.Unauthorized_Msg);
controller.renderJson(json);
} else {
controller.redirect("/login");
}
}
}