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

📄 loginworker.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
字号:
/* * $Id: LoginWorker.java 6011 2005-10-24 21:57:50Z jonesde $ * * Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */package org.ofbiz.webapp.control;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletRequest;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import javax.servlet.jsp.PageContext;import javax.transaction.Transaction;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.UtilFormatOut;import org.ofbiz.base.util.UtilMisc;import org.ofbiz.entity.GenericDelegator;import org.ofbiz.entity.GenericEntityException;import org.ofbiz.entity.GenericValue;import org.ofbiz.entity.transaction.GenericTransactionException;import org.ofbiz.entity.transaction.TransactionUtil;/** * Common Workers * * @author     <a href="mailto:jonesde@ofbiz.org">David E. Jones</a> * @version    $Rev: 6011 $ * @since      2.0 */public class LoginWorker {        public final static String module = LoginWorker.class.getName();    public static final String EXTERNAL_LOGIN_KEY_ATTR = "externalLoginKey";    /** This Map is keyed by the randomly generated externalLoginKey and the value is a UserLogin GenericValue object */    public static Map externalLoginKeys = new HashMap();        public static String makeLoginUrl(PageContext pageContext) {        return makeLoginUrl(pageContext, "checkLogin");    }    public static String makeLoginUrl(ServletRequest request) {        return makeLoginUrl(request, "checkLogin");    }	    public static String makeLoginUrl(PageContext pageContext, String requestName) {        return makeLoginUrl(pageContext.getRequest(), requestName);    }    public static String makeLoginUrl(ServletRequest request, String requestName) {        String queryString = null;        Enumeration parameterNames = request.getParameterNames();        while (parameterNames != null && parameterNames.hasMoreElements()) {            String paramName = (String) parameterNames.nextElement();            if (paramName != null) {                if (queryString == null) queryString = paramName + "=" + request.getParameter(paramName);                else queryString = queryString + "&" + paramName + "=" + request.getParameter(paramName);            }        }        String loginUrl = "/" + requestName + "/" + UtilFormatOut.checkNull((String) request.getAttribute("_CURRENT_VIEW_"));        if (queryString != null) loginUrl = loginUrl + "?" + UtilFormatOut.checkNull(queryString);        return loginUrl;    }        /**     * Gets (and creates if necessary) a key to be used for an external login parameter     */    public static String getExternalLoginKey(HttpServletRequest request) {        //Debug.logInfo("Running getExternalLoginKey, externalLoginKeys.size=" + externalLoginKeys.size(), module);        GenericValue userLogin = (GenericValue) request.getAttribute("userLogin");        String externalKey = (String) request.getAttribute(EXTERNAL_LOGIN_KEY_ATTR);        if (externalKey != null) return externalKey;        HttpSession session = request.getSession();        synchronized (session) {            // if the session has a previous key in place, remove it from the master list            String sesExtKey = (String) session.getAttribute(EXTERNAL_LOGIN_KEY_ATTR);            if (sesExtKey != null) {                externalLoginKeys.remove(sesExtKey);            }            //check the userLogin here, after the old session setting is set so that it will always be cleared            if (userLogin == null) return "";            //no key made yet for this request, create one            while (externalKey == null || externalLoginKeys.containsKey(externalKey)) {                externalKey = "EL" + Long.toString(Math.round(Math.random() * 1000000)) + Long.toString(Math.round(Math.random() * 1000000));            }            request.setAttribute(EXTERNAL_LOGIN_KEY_ATTR, externalKey);            session.setAttribute(EXTERNAL_LOGIN_KEY_ATTR, externalKey);            externalLoginKeys.put(externalKey, userLogin);            return externalKey;        }    }    public static void cleanupExternalLoginKey(HttpSession session) {        String sesExtKey = (String) session.getAttribute(EXTERNAL_LOGIN_KEY_ATTR);        if (sesExtKey != null) {            externalLoginKeys.remove(sesExtKey);        }    }    public static void setLoggedOut(String userLoginId, GenericDelegator delegator) {        Transaction parentTx = null;        boolean beganTransaction = false;        try {            try {                parentTx = TransactionUtil.suspend();            } catch (GenericTransactionException e) {                Debug.logError(e, "Cannot suspend current transaction: " + e.getMessage(), module);            }            try {                beganTransaction = TransactionUtil.begin();                GenericValue userLogin = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", userLoginId));                userLogin.set("hasLoggedOut", "Y");                userLogin.store();            } catch (GenericEntityException e) {                String errMsg = "Unable to set logged out flag on UserLogin";                Debug.logError(e, errMsg, module);                try {                    TransactionUtil.rollback(beganTransaction, errMsg, e);                } catch (GenericTransactionException e2) {                    Debug.logError(e2, "Could not rollback nested transaction: " + e.getMessage(), module);                }            } finally {                try {                    TransactionUtil.commit(beganTransaction);                } catch (GenericTransactionException e) {                    Debug.logError(e, "Could not commit nested transaction: " + e.getMessage(), module);                }            }        } finally {            // resume/restore parent transaction            if (parentTx != null) {                try {                    TransactionUtil.resume(parentTx);                    Debug.logVerbose("Resumed the parent transaction.", module);                } catch (GenericTransactionException ite) {                    Debug.logError(ite, "Cannot resume transaction: " + ite.getMessage(), module);                }            }        }    }}

⌨️ 快捷键说明

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