📄 passport.java
字号:
package com.redmoon.forum.security;import java.util.*;import javax.servlet.http.*;import cn.js.fan.security.*;import cn.js.fan.util.*;import com.redmoon.forum.*;import com.redmoon.forum.person.*;import cn.js.fan.web.SkinUtil;public class Passport { public Passport() { } public boolean doAction(HttpServletRequest request, HttpServletResponse response) throws ErrMsgException { String action = ParamUtil.get(request, "action"); String auth = ParamUtil.get(request, "auth"); String forward = ParamUtil.get(request, "forward"); String verify = ParamUtil.get(request, "verify"); Config cfg = Config.getInstance(); String key = cfg.getKey(); String vstr = ""; try { vstr = SecurityUtil.MD5(action + auth + forward + key); } catch (Exception e) { e.printStackTrace(); } if (!verify.equals(vstr)) { throw new ErrMsgException("Verify is invalid."); } if (action.equals("")) { throw new ErrMsgException("Lack of required parameters."); } if (action.equals("regist")) { return regist(request, response); } else if (action.equals("login")) { return login(request, response); } else if (action.equals("logout")) { return logout(request, response); } else { throw new ErrMsgException("Action is invalid."); } } public boolean logout(HttpServletRequest request, HttpServletResponse response) throws ErrMsgException { return Privilege.doLogout(request, response, Privilege.getUser(request)); } public boolean regist(HttpServletRequest request, HttpServletResponse response) throws ErrMsgException { Config cfg = Config.getInstance(); String key = cfg.getKey(); String auth = ParamUtil.get(request, "auth"); auth = ThreeDesUtil.decrypthexstr(key, auth); String[] ary = StrUtil.split(auth, "\\|"); int len = ary.length; Map map = new HashMap(); for (int i = 0; i < len; i++) { String[] pair = ary[i].split("="); if (pair.length == 2) map.put(pair[0].toLowerCase(), pair[1]); } String uid = StrUtil.getNullStr((String) map.get("uid")); String pwd = StrUtil.getNullStr((String) map.get("pwd")); String email = StrUtil.getNullStr((String) map.get("email")); String gender = StrUtil.getNullStr((String) map.get("gender")); String birthday = StrUtil.getNullStr((String) map.get("birthday")); String regip = StrUtil.getNullStr((String) map.get("regip")); String regdate = StrUtil.getNullStr((String) map.get("regdate")); String home = StrUtil.getNullStr((String) map.get("home")); String qq = StrUtil.getNullStr((String) map.get("qq")); String msn = StrUtil.getNullStr((String) map.get("msn")); String fetion = StrUtil.getNullStr((String) map.get("fetion")); String mobile = StrUtil.getNullStr((String) map.get("mobile")); String nick = StrUtil.getNullStr((String) map.get("nick")); String realname = StrUtil.getNullStr((String) map.get("realname")); String timezone = StrUtil.getNullStr((String) map.get("timezone")); if (timezone.equals("")) timezone = "GMT+08:00"; if (uid.equals("")) { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.security.Passport", "err_uid_empty")); } if (nick.equals("")) { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.security.Passport", "err_nick_empty")); } String strTime = StrUtil.getNullStr((String)map.get("time")); long time = StrUtil.toLong(strTime); long curTime = System.currentTimeMillis(); if (Math.abs(curTime - time)/(1000*60)>30) { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.security.Passport", "err_invalid_time")); } Date rd = null; if (regdate.equals("")) rd = DateUtil.parse(strTime); else rd = DateUtil.parse(regdate, "yyyy-MM-dd HH:mm:ss"); UserDb user = new UserDb(); user = user.getUser(uid); if (user.isLoaded()) { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.security.Passport", "err_uid_exist")); } user.setName(uid); user.setNick(nick); String pwdMD5 = ""; try { pwdMD5 = SecurityUtil.MD5(pwd); } catch (Exception e) { e.printStackTrace(); } user.setPwdMd5(pwdMD5); user.setRawPwd(pwd); user.setGender(gender); user.setBirthday(DateUtil.parse(birthday, "yyyy-MM-dd")); user.setMobile(mobile); user.setEmail(email); user.setOicq(qq); user.setIp(regip); user.setHome(home); user.setMsn(msn); user.setFetion(fetion); user.setRegDate(rd); user.setRealName(realname); user.setCheckStatus(user.CHECK_STATUS_PASS); TimeZone tz = TimeZone.getTimeZone(timezone); user.setTimeZone(tz); boolean re = user.create(); if (re) { userservice us = new userservice(); us.doRegist(request, response, user); } return re; } public boolean login(HttpServletRequest request, HttpServletResponse response) throws ErrMsgException { Config cfg = Config.getInstance(); String key = cfg.getKey(); String auth = ParamUtil.get(request, "auth"); auth = ThreeDesUtil.decrypthexstr(key, auth); String[] ary = StrUtil.split(auth, "\\|"); int len = ary.length; Map map = new HashMap(); for (int i = 0; i < len; i++) { String[] pair = ary[i].split("="); if (pair.length == 2) map.put(pair[0].toLowerCase(), pair[1]); } String uid = StrUtil.getNullStr((String) map.get("uid")); String pwd = StrUtil.getNullStr((String) map.get("pwd")); String email = StrUtil.getNullStr((String) map.get("email")); String gender = StrUtil.getNullStr((String) map.get("gender")); String birthday = StrUtil.getNullStr((String) map.get("birthday")); String regdate = StrUtil.getNullStr((String) map.get("regdate")); String home = StrUtil.getNullStr((String) map.get("home")); String qq = StrUtil.getNullStr((String) map.get("qq")); String msn = StrUtil.getNullStr((String) map.get("msn")); String fetion = StrUtil.getNullStr((String) map.get("fetion")); String mobile = StrUtil.getNullStr((String) map.get("mobile")); String nick = StrUtil.getNullStr((String) map.get("nick")); String realname = StrUtil.getNullStr((String) map.get("realname")); String timezone = StrUtil.getNullStr((String)map.get("timezone")); if (uid.equals("")) { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.security.Passport", "err_uid_empty")); } String strTime = StrUtil.getNullStr((String)map.get("time")); long time = StrUtil.toLong(strTime); long curTime = System.currentTimeMillis(); if (Math.abs(curTime - time)/(1000*60)>30) { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.security.Passport", "err_invalid_time")); } UserDb user = new UserDb(); user = user.getUser(uid); if (!user.isLoaded()) { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.security.Passport", "err_user_not_exist")); } if (!nick.equals("")) user.setNick(nick); if (!pwd.equals("")) { String pwdMD5 = ""; try { pwdMD5 = SecurityUtil.MD5(pwd); } catch (Exception e) { e.printStackTrace(); } user.setPwdMd5(pwdMD5); user.setRawPwd(pwd); } if (!gender.equals("")) user.setGender(gender); if (!birthday.equals("")) user.setBirthday(DateUtil.parse(birthday, "yyyy-MM-dd")); if (!mobile.equals("")) user.setMobile(mobile); if (!email.equals("")) user.setEmail(email); if (!qq.equals("")) user.setOicq(qq); if (!home.equals("")) user.setHome(home); if (!msn.equals("")) user.setMsn(msn); if (!fetion.equals("")) user.setFetion(fetion); if (!regdate.equals("")) user.setRegDate(DateUtil.parse(regdate, "yyyy-MM-dd")); if (!realname.equals("")) user.setRealName(realname); if (!timezone.equals("")) { TimeZone tz = TimeZone.getTimeZone(timezone); user.setTimeZone(tz); } Privilege pvg = new Privilege(); return pvg.doLogin(request, response, user); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -