📄 logonaction.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 + -