⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logonaction.java

📁 j2ee源码
💻 JAVA
字号:
package com.leeman.wkexs.logon.web;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

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

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.leeman.common.handler.ObjectTokenHandler;
import com.leeman.common.handler.ObjectTokenHandlerHelper;
import com.leeman.common.util.Formatter;
import com.leeman.common.web.ui.ScreenOption;
import com.leeman.wkexs.common.ClientInfo;
import com.leeman.wkexs.common.security.WebGuard;
import com.leeman.wkexs.common.security.exceptions.AccountLockedException;
import com.leeman.wkexs.common.security.exceptions.InvalidPasswordException;
import com.leeman.wkexs.common.security.exceptions.InvalidUserException;
import com.leeman.wkexs.master.company.entity.CompanySO;
import com.leeman.wkexs.master.company.web.CompanyUtil;
import com.leeman.wkexs.web.base.BaseAction;
import com.leeman.wkexs.web.base.BaseCollectionCache;
import com.leeman.wkexs.web.base.BaseConstants;


/**
 * @version 	1.0
 * @author
 */
public class LogonAction extends BaseAction{
	
	public Map getCmdMethodMap()
	{
		HashMap map = new HashMap();
		map.put("init","init");
		map.put("logon", "logon");
		map.put("logout", "logout");
		map.put("logonAgain","logonAgain");
		map.put("logonOption","logonOption");
		return map;
	}
	
	//	Command's Function
	public ActionForward init(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		
		if(request.getParameter("welcome")!=null){
			doWelcome(mapping, form, request, response);
			return mapping.findForward(getWelcomeForward());
		}
		else{
			doInit(mapping, form, request, response);
			setMode(form, request, BaseConstants.MODE_INIT);
			return mapping.findForward(getInitForward());
		}
	}
	
	public ActionForward logon(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		
		return doLogon(mapping, form, request, response);
		//setMode(request, BaseConstants.MODE_ADD_NEW);
		//return mapping.findForward(getLogonForward());
	}
	
	public ActionForward logout(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		return doLogout(mapping, form, request, response);
		//setMode(request, BaseConstants.MODE_ADD_NEW);
		//return mapping.findForward(getLogonForward());
	}
	
	public ActionForward logonAgain(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		return dologonAgain(mapping, form, request, response);
		//setMode(request, BaseConstants.MODE_ADD_NEW);
		//return mapping.findForward(getLogonForward());
	}
	
	public ActionForward logonOption(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request, 
		HttpServletResponse response) throws Exception{
		LogonForm logonForm = (LogonForm)form;
		String optLogonType = Formatter.replaceNullString(logonForm.getOptLogonType());
		if(optLogonType.equals("Y"))
		{
			ObjectTokenHandler ohandler = ObjectTokenHandlerHelper.getObjectTokenHandler();
			ohandler.releaseAllToken(getCompanyId(request),getClientInfo(request).getUser_id());
			ohandler.remove();
		}
		HttpSession session = request.getSession();
		logonForm.setJs_code((String)session.getAttribute(BaseConstants.SESSION_IS_WELCOME_PAGE_OPENED));
		logonForm.setComp_name((String)session.getAttribute(BaseConstants.SESSION_COMPANY_NAME));
		session.setAttribute(BaseConstants.SESSION_IS_WELCOME_PAGE_OPENED,"Y");
		return mapping.findForward(getLogonForward());
	}
	//	Action Forwards
	public String getInitForward(){
		return "logon";
	}
	public String getLogonForward(){
		return "loggedOnPage";
	}
	public String getLogoutForward(){
		return "logout";
	}
	public String getWelcomeForward(){
		return "welcome";
	}
	public String getLogonOptionForward(){
		return "logonOption";
	}
	
	public void initFormData_LogonForm(HttpServletRequest request, LogonForm logonForm) throws Exception
	{		
		logonForm.setLang_id(logonForm.getSelLang_id()[0]);
		logonForm.setLangList(getSysXlatItemListByField(BaseConstants.XLAT_LANG_CD,logonForm.getLang_id()));
		
		// only active company will be listed out
		logonForm.setCompList(CompanyUtil.getActiveCompanyList());
		logonForm.setComp_id(logonForm.getSelComp_id()[0]);
		
		logonForm.setComp_name(WebGuard.getCompanyName(logonForm.getSelComp_id()[0], logonForm.getLang_id()));
	}
	
	//Abstract Do Functions to be implement 
	public ActionForward doWelcome(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception{
		LogonForm logonForm = (LogonForm) form;
		try{
			WebGuard.ValidateSession(request,response,"");
			logonForm.setLang_id((String)request.getSession().getAttribute(BaseConstants.SESSION_LANG_ID));
			
			//Clear Program Id and Mode
			BaseCollectionCache baseCollectionCache = getCollectionCache(request);
			if(baseCollectionCache != null)
			{
				baseCollectionCache.setMode(null);
				baseCollectionCache.setProgram_id(null);
			}
			setCollectionCache(request,baseCollectionCache);
		}catch(Exception e){
		}
		return mapping.findForward("welcome");
	}
	
	public ActionForward doInit(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception{
		
		//initialize Form Object
		LogonForm logonForm = (LogonForm) form;
		try
		{
			//Init variable
			String userid="";
			String compid="";
			String langid="";
				
			//check for return value
			if (request.getParameter("lang_id") != null)
				langid = request.getParameter("lang_id");
			if (request.getParameter("comp_id") != null)
				compid = request.getParameter("comp_id");
			
			Cookie cookie[] = request.getCookies();
			int cookie_length = 0;
			if(cookie != null)
			{
				cookie_length =  cookie.length;
			}
			for(int i=0; i<cookie_length; i++){
				if(cookie[i].getName().equals(BaseConstants.COOKIE_LANG_ID))
				{
					if(langid.equals("") || !validateLang_id(langid))
						langid=cookie[i].getValue();
				}
				else if(cookie[i].getName().equalsIgnoreCase(BaseConstants.COOKIE_COMPANY_ID))
				{
					if(compid.equals(""))
						compid=cookie[i].getValue();
				}
				else if(cookie[i].getName().equalsIgnoreCase(BaseConstants.COOKIE_USER_ID))
				{
					userid=cookie[i].getValue();
				}
			}
			if(langid.equals("") || !validateLang_id(langid)){
				langid = getDefaultLangId();
			}
			if(compid.equals("")){
				compid = getDefaultCompanyId();
			}
			if(userid.equals(""))
				userid = "";
			
			request.setAttribute("comp_id", compid);
			
			String[] lang = {langid};
			String[] comp = {compid};
			logonForm.setSelLang_id(lang);
			logonForm.setSelComp_id(comp);
			logonForm.setUser_id(userid);
			initFormData_LogonForm(request, logonForm);
			WebGuard.SetSessionLocale(request,logonForm.getLang_id());
			
			if (logonForm.getLangList() == null)
			{
				logonForm.setError_message("Lang List is null");			
				return mapping.findForward(getInitForward());
			}
			else
			{
				return mapping.findForward(getInitForward());	
			}
		}
		catch(Exception e)
		{
			logonForm.setError_message(e.getMessage());
			WebGuard.SetSessionLocale(request,getDefaultLangId());
			logonForm.setLang_id(getDefaultLangId());
			logonForm.setComp_id("");
			return mapping.findForward(getInitForward());
		}
	}
	
	public ActionForward doLogon(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception{
	
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward();
		boolean isErrors = false;
		// return value
		LogonForm logonForm = (LogonForm) form;
		HttpSession session = request.getSession();

		try {
			if (session.getAttribute(BaseConstants.SESSION_IS_WELCOME_PAGE_OPENED)==null){
				// do something here
				//System.out.println("[LogonAction]: Start of execute...");
	
				//System.out.println("[LogonAction]: Web Guard...");
				WebGuard.logon(logonForm.getSelComp_id()[0],logonForm.getUser_id(),
					logonForm.getPassword(),logonForm.getSelLang_id()[0],request,response);
	
				//Write cookies to browser
				//System.out.println("[LogonAction]: Set Cookie...");
				Cookie cookie = new Cookie(BaseConstants.COOKIE_USER_ID, logonForm.getUser_id());
				cookie.setMaxAge(864000);	//10 Days
				response.addCookie(cookie);
	
				Cookie cookieCompanyID = new Cookie(BaseConstants.COOKIE_COMPANY_ID, logonForm.getSelComp_id()[0]);
				cookieCompanyID.setMaxAge(864000);
				response.addCookie(cookieCompanyID);
				
				Cookie cookieLangID = new Cookie(BaseConstants.COOKIE_LANG_ID, logonForm.getSelLang_id()[0]);
				cookieLangID.setMaxAge(864000);
				cookieLangID.setPath(request.getContextPath());
				response.addCookie(cookieLangID);
				//End of Write cookies
	
				//System.out.println("[LogonAction]: End of execute...");
			}
		}
		catch (InvalidPasswordException e)
		{
			logonForm.setError_message(getResourceMessage(request,"errors.invalidPassword"));
			isErrors = true;
		}
		catch (AccountLockedException e)
		{
			logonForm.setError_message(getResourceMessage(request,"errors.accountNotActive"));
			isErrors = true;
		}
		catch (InvalidUserException e)
		{
			logonForm.setError_message(getResourceMessage(request,"errors.invalidUser"));
			isErrors = true;
		}
		catch (Exception e) {
			// Report the error using the appropriate name and ID.
			logonForm.setError_message("UnknowErrorOccur");
			isErrors = true;
		}
		if (isErrors) {
			initFormData_LogonForm(request,logonForm);
			forward = mapping.findForward(getInitForward());
		} else {
			
			ObjectTokenHandler ohandler = ObjectTokenHandlerHelper.getObjectTokenHandler();
			if(ohandler.isUserToken(logonForm.getSelComp_id()[0],logonForm.getUser_id().toUpperCase()))
			{
				ohandler.releaseAllToken(logonForm.getSelComp_id()[0],logonForm.getUser_id());
				logonForm.setComp_name((String)session.getAttribute(BaseConstants.SESSION_COMPANY_NAME));
				logonForm.setOptLogonType("N");
				forward = mapping.findForward(getLogonOptionForward());
			}
			else
			{
				logonForm.setJs_code((String)session.getAttribute(BaseConstants.SESSION_IS_WELCOME_PAGE_OPENED));
				logonForm.setComp_name((String)session.getAttribute(BaseConstants.SESSION_COMPANY_NAME));
				session.setAttribute(BaseConstants.SESSION_IS_WELCOME_PAGE_OPENED,"Y");
				forward = mapping.findForward(getLogonForward());
			}
			ohandler.remove();			
		}
		return forward;
	}
	
	public ActionForward doLogout(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception{
		ActionForward forward = new ActionForward();
		
		//Logout Action
		HttpSession session = request.getSession();
		ClientInfo ci = (ClientInfo)session.getAttribute(BaseConstants.SESSION_CLIENT_INFO);
		if (ci != null)
		{
			ObjectTokenHandler ohandler = ObjectTokenHandlerHelper.getObjectTokenHandler();
			if(ohandler.isUserToken(ci.getCompany_id() ,ci.getUser_id()))
			{
				ohandler.releaseAllToken(ci.getCompany_id(), ci.getUser_id(), ci.getSession_id());
			}
			ohandler.remove();
		}
		
		WebGuard.logout(request,response);
		forward = mapping.findForward(getLogoutForward());
				
		return forward;			
	}
	
	public ActionForward dologonAgain(ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response)
		throws Exception{
		ActionForward forward = new ActionForward();
		
		LogonForm logonForm = (LogonForm) form;
		
		try{
			WebGuard.ValidateSession(request,response,"");
			logonForm.setComp_name((String)request.getSession().getAttribute(BaseConstants.SESSION_COMPANY_NAME));
			logonForm.setError_message(getResourceMessage(request,"errors.notLoggedOut"));
			forward = mapping.findForward(getLogonForward());
		}catch(Exception e){
			//Init variable
			String userid="";
			String compid="";
			String langid="";

			Cookie cookie[] = request.getCookies();
			int cookie_lenght = cookie.length;
		
			//check for return value
			if (request.getParameter("lang_id") != null)
				langid = request.getParameter("lang_id");
			if (request.getParameter("comp_id") != null)
				compid = request.getParameter("comp_id");

			for(int i=0; i<cookie_lenght; i++){
				if(cookie[i].getName().equals(BaseConstants.COOKIE_LANG_ID))
				{
					if(langid.equals("") || !validateLang_id(langid))
						langid=cookie[i].getValue();
				}
				else if(cookie[i].getName().equalsIgnoreCase(BaseConstants.COOKIE_COMPANY_ID))
				{
					if(compid.equals(""))
						compid=cookie[i].getValue();
				}
				else if(cookie[i].getName().equalsIgnoreCase(BaseConstants.COOKIE_USER_ID))
				{
					userid=cookie[i].getValue();
				}
			}
			if(langid.equals("") || !validateLang_id(langid))
				langid = "cht";
			if(compid.equals(""))
				compid = "LK";
			if(userid.equals(""))
				userid = "";
		
			String[] lang = {langid};
			String[] comp = {compid};
			logonForm.setSelLang_id(lang);
			logonForm.setSelComp_id(comp);
			logonForm.setUser_id(userid);
			WebGuard.SetSessionLocale(request,logonForm.getLang_id());
			initFormData_LogonForm(request,logonForm);
			forward = mapping.findForward(getInitForward());
		}
		return forward;			
	}
	
	//Validation on Get Cookie
	public boolean validateLang_id(String lang_id){
		boolean isValid = false;
		if(lang_id.equals(BaseConstants.LANG_ENGLISH)||lang_id.equals(BaseConstants.LANG_SIMPLIFIED_CHINESE)||lang_id.equals(BaseConstants.LANG_TRADITIONAL_CHINESE))
			isValid = true;
		else
			isValid = false;	
		return isValid;
	}
	
	//Get Default Company ID
	private String getDefaultCompanyId() throws Exception{
		ArrayList compList = CompanyUtil.getCompanyList(new CompanySO());
		String company_id = null;
		if(compList != null && compList.size()>0)
		{
			ScreenOption vo = (ScreenOption)compList.get(0);
			company_id = vo.getValue();
		}
		return company_id;
	}
	//Get Default Lang ID
	private String getDefaultLangId(){
		return BaseConstants.LANG_TRADITIONAL_CHINESE;
	}
}

⌨️ 快捷键说明

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