package com.blinkcoder.handler;
import com.blinkcoder.common.myConstants;
import com.blinkcoder.kit.DesKit;
import com.blinkcoder.model.User;
import com.jfinal.handler.Handler;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URLDecoder;
/**
* User: Michael Chen
* Email: yidongnan@gmail.com
* Date: 2014/4/6
* Time: 9:01
*/
public class UserHandler extends Handler {
@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
// 动态生成的sitemap.xml和rss的xml
if (target.contains(".") && !target.endsWith(".xml")) {
return;
}
Cookie[] cookies = request.getCookies();
if (ArrayUtils.isNotEmpty(cookies)) {
for (Cookie cookie : cookies) {
if ("blinkcoder".equals(cookie.getName())) {
String loginKey = cookie.getValue();
String key = null;
try {
key = new String(DesKit.decrypt(Base64.decodeBase64(URLDecoder.decode(loginKey, "UTF-8").getBytes()),
myConstants.COOKIE_ENCRYPT_KEY));
} catch (Exception e) {
key = null;
}
if (StringUtils.isNotEmpty(key) && key.contains("|")) {
String[] fieldArray = key.split("\\|");
int id = Integer.parseInt(fieldArray[0]);
String openid = fieldArray[1];
User user = User.dao.Get(id);
if (openid != null && user != null && openid.equals(user.get("openid"))) {
request.setAttribute("g_user", user);
}
}
break;
}
}
}
nextHandler.handle(target, request, response, isHandled);
}
}