userlogin.java

来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 222 行

JAVA
222
字号
/* 
 * Created on 2007-2-10
 * Last modified on 2007-11-9
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.service.user;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.log4j.Logger;

import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.model.Admin;
import com.yeqiangwei.club.model.ManageLog;
import com.yeqiangwei.club.model.User;
import com.yeqiangwei.club.model.UserSettings;
import com.yeqiangwei.club.service.util.BasicInfoService;
import com.yeqiangwei.club.service.util.ManageLogService;
import com.yeqiangwei.club.util.BeanUtils;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.util.PostUtils;
import com.yeqiangwei.util.Validator;
import com.yeqiangwei.club.controller.form.UserLoginForm;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.view.model.UserView;
import com.yeqiangwei.util.FormatDateTime;
import com.yeqiangwei.util.ParamUtils;
import com.yeqiangwei.util.TypeChange;

/**
 * 
 * @author yeqiangwei
 */
public class UserLogin {
	
	private static final Logger logger = Logger.getLogger(UserLogin.class);
	
	public static UserSettings getUserSettings(HttpServletRequest request){
		return UserLogin.getUserSettingsService().getUserSettings(UserLogin.getUserId(request));
	}
	
	public static Admin getAdmin(HttpServletRequest request){
		return ParamUtils.getSessionObject(request,"Admin",null);
	}
	
	public static int getUserId(HttpServletRequest request){
		User user = getUser(request);
		if(!Validator.isEmpty(user)){
			return user.getUserId();
		}else{
			return 0;
		}
	}
	
	public static String getUserName(HttpServletRequest request) {
		User user = getUser(request);
		if(!Validator.isEmpty(user)){
			return user.getUserName();
		}else{
			return null;
		}
	}

	public static User getUser(HttpServletRequest request) {
		return UserLogin.getUserService().findById(ParamUtils.getSessionInt(request,"userId", 0));
	}
	
	public static void setUserId(HttpServletRequest request, HttpServletResponse response, User user) {
		if(user==null)return ;
		UserLogin.setUserId(request, user.getUserId());
		UserLogin.setCookies(request, response, user, 365);
	}
	
	
	public static void setUserId(HttpServletRequest request, int userId)
	{
		ParamUtils.setSession(request,"userId",userId);
	}
	
	public static void setCookies(HttpServletRequest request
			,HttpServletResponse response, User model, int days)
	{
		ParamUtils.setCookieValue(response,getBasicInfoService().cookieDomain(),"YQWuserId",String.valueOf(model.getUserId()), days);
		ParamUtils.setCookieValue(response,getBasicInfoService().cookieDomain(),"YQWuserName",model.getUserName(), days);
		ParamUtils.setCookieValue(response,getBasicInfoService().cookieDomain(),"YQWpassword",model.getPassword(), days);
		UserLogin.setUserId(request, model.getUserId());
	}

	/**
	 * 登录失效后初始化登录
	 * @param service
	 */
	public static User loginInit(HttpServletRequest request, UserService service){
		User model = UserLogin.getUser(request);
		if(Validator.isEmpty(model)){
			int userId = TypeChange.stringToInt(ParamUtils.getCookieValue(request, "YQWuserId",null));
			String userName = ParamUtils.getCookieValue(request, "YQWuserName",null);
			String password = ParamUtils.getCookieValue(request, "YQWpassword",null);
			if(Validator.isEmpty(userName)||Validator.isEmpty(password)){
				return null;
			}
			model = new User();
			model.setUserId(userId);
			model.setUserName(userName);
			model.setPassword(password);
			model.setLastLoginDateTime(FormatDateTime.now());
			model.setLastLoginIp(request.getRemoteAddr());
			try {
				model = service.findByUserNameAndPassword(model,false);
				if(!Validator.isEmpty(model)){
					UserLogin.setUserId(request, model.getUserId());
				}
			} catch (ClubException e) {
				logger.error(e.toString());
			}
		}
		return model;
	}
	
	/**
	 * 登录成功后数据SET
	 * @param user
	 * @param days
	 */
	public static User login(HttpServletRequest request,HttpServletResponse response
			, UserService service, UserLoginForm f){
		int days = f.getRemember();
		User model = new User();
		BeanUtils.copyProperties(model,f);
		int num = ParamUtils.getSessionInt(request,"loginPosts",0);
		String rand = ParamUtils.getSessionString(request,"rand","");
		if(num>=3){
			if(!f.getRand().equals(rand)){
				request.setAttribute("message",MessageUtils.getMessage("error_post_rand"));
				return null;
			}
		}
		try {
			model = service.findByUserNameAndPassword(model,true);
			if(!Validator.isEmpty(model)){
				ManageLog log = new ManageLog();
				log.setTopicId(0);
				log.setTitle("");
				log.setByUserId(model.getUserId());
				log.setByUserName(model.getUserName());
				log.setByUserIp(request.getRemoteAddr());
				log.setCreateDateTime(FormatDateTime.now());
				log.setForumId(0);
				service.ruleUtils(log,0,1);
				log.setUserName(model.getUserName());
				log.setUserId(model.getUserId());
				log.setIsList(true);
				log.setListByUserName(true);
				log.setMemo("登录社区");
				log.setContent(model.getUserName()+"晃晃荡荡的进了社区...");
				getManageLogService().create(log);
			}
		} catch (ClubException e) {
			logger.error(e.toString());
		}
		if(!Validator.isEmpty(model)){
			setCookies(request,response,model,days);
			PostUtils.removeNumber(request,"loginPosts");
		}
		return model;
	}

	public static User getUser(String userName, String password){
		User model = new User();
		model.setUserName(userName);
		model.setPassword(password);
		try {
			return getUserService().findByUserNameAndPassword(model);
		} catch (ClubException e) {
			logger.error(e.toString());
		}
		return null;
	}
	
	public static User getInstance(HttpServletRequest request){
		return UserLogin.getUser(request);
	}
	
	public static UserView getInstanceV(HttpServletRequest request){
		User user =  UserLogin.getInstance(request);
		if(!Validator.isEmpty(user)){
			UserView view = new UserView();
			BeanUtils.copyProperties(view,user);
			return view;
		}else{
			return null;
		}
	}

	public static void logout(HttpServletRequest request,HttpServletResponse response){
		UserLogin.setUserId(request, 0);
		ParamUtils.setCookieValue(response,getBasicInfoService().cookieDomain(),"YQWuserId",null, 0);
		ParamUtils.setCookieValue(response,getBasicInfoService().cookieDomain(),"YQWuserName",null, 0);
		ParamUtils.setCookieValue(response,getBasicInfoService().cookieDomain(),"YQWpassword",null, 0);
		logger.info("loginOut");
	}
	
	public static BasicInfoService getBasicInfoService() {
		return ServiceWrapper.<BasicInfoService>getSingletonInstance(ServiceLocator.BASICINFO);
	}
	
	public static ManageLogService getManageLogService() {
		return ServiceWrapper.<ManageLogService>getSingletonInstance(ServiceLocator.MANAGELOG);
	}

	public static UserSettingsService getUserSettingsService() {
		return ServiceWrapper.<UserSettingsService>getSingletonInstance(ServiceLocator.USERSETTINGS);
	}
	
	public static UserService getUserService() {
		return ServiceWrapper.<UserService>getSingletonInstance(ServiceLocator.USER);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?