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

📄 cerpsam.java

📁 哈工大CERP系统Java源码及开发说明.rar 内容十分详尽
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.huiton.cerp.pub.util.functions;/*    author : zaj    date : 2001/12/30    program : CerpSAM    说明:Cerp系统管理类,主要用于处理用户登陆,认证*/import java.util.*;import java.sql.*;import javax.servlet.http.*;import com.huiton.mainframe.util.*;import com.huiton.mainframe.util.tracer.Debug;import com.huiton.mainframe.control.web.ModelManager;import com.huiton.mainframe.control.web.CustomerWebImpl;import com.huiton.pub.dbx.*;import com.huiton.cerp.pub.util.SubsystemKeys;public class CerpSAM{    private static final int times = 3; // times try to get pageQuery    private static final int timeout = 30; // default timeout minutes    private boolean  hasObject = false; // flag of initialized pageQuery    private PageQuery pageQuery = null;    private ResultSet rs = null;    private String sql = null;    public CerpSAM()    {       created();    }    // new instance    public static CerpSAM newInstance()    {        CerpSAM cs = new CerpSAM() ;        return cs ;    }    // create pageQuery if not initialized    private boolean created()    {        try        {            for (int i=0; i<times && !hasObject ;i++)            {                pageQuery = new PageQuery("","sam");                hasObject = true;            }            return hasObject;        }        catch (Exception e)        {            return hasObject;        }    }    // get timeout of the company    private int getTimeout(String companyCode)    {        if (!created())            return timeout ;        try        {            sql = "select time_out from scg_run_info "                + " where company_code='" +companyCode+ "'";            rs = pageQuery.getData(sql);            if (rs != null && rs.next())            {                int time_out = rs.getInt(1);                if (time_out>0)                    return time_out;            }            return timeout;        }        catch (Exception e)        {            return timeout ;        }    }    // max number of users of the Company    private int getMaxCompanyUser(String companyCode)    {        return 100;    }    // current online company  user    private int getCurrentCompanyUser(String companyCode)    {        if (!created())            return 0 ;        try        {            sql = "select count(*) from sam_session "                + " where company_code='" +companyCode + "'";            rs = pageQuery.getData(sql);            if (rs != null && rs.next())            {                return rs.getInt(1);            }            return 0;        }        catch (Exception e)        {            return 0;        }    }    // current online users using this account    private int getCurrentTheUser(String companyCode,String userCode)    {        if (!created())            return 0 ;        try        {            sql = "select count(*) from sam_session "                + " where company_code='" +companyCode                + "' and user_code='" +userCode+ "'";            rs = pageQuery.getData(sql);            if (rs != null && rs.next())            {                return rs.getInt(1);            }            return 0;        }        catch (Exception e)        {            return 0;        }    }    private boolean acceptIP(String standardIP,String clientIP)    {        standardIP = (standardIP==null ? "" : standardIP.trim());        clientIP = (clientIP==null ? "" : clientIP.trim());        if (standardIP.length()<1) // no restriction            return true ;        if (standardIP.equals(clientIP))            return true ;        StringTokenizer standardST = new StringTokenizer(standardIP,".");        StringTokenizer clientST = new StringTokenizer(clientIP,".");        while (standardST.hasMoreElements())        {            String sPart = (String)standardST.nextElement();            sPart = (sPart==null ? "" : sPart.trim());            if (clientST.hasMoreElements())            {                String cPart = (String)clientST.nextElement();                cPart = (cPart==null ? "" : cPart.trim());                if (sPart.equals("*"))                    continue ;                if (!sPart.equalsIgnoreCase(cPart))                    return false ;            }else            {                return false ;            }        }        return true ;    }    //check password    private boolean m_equals(String standPass,String userPass)    {        standPass = (standPass==null ? "" : standPass.trim());        userPass = (userPass==null ? "" : userPass.trim());        return standPass.equals(userPass);    }    // login process    public boolean login(HttpServletRequest request,String companyCode,String userCode,String password,String year)    {        if (!created())            return false ;        try        {            sql = "SELECT user_status,ip_addr,permit_num,user_pass, user_unique_no"                + " FROM sam_user_auth "                + " WHERE user_code = '" + userCode                + "' and company_code = '" + companyCode + "'";            rs = pageQuery.getData(sql);            // check            if(rs!=null&&rs.next())            {                // get user status                String userStatus = rs.getString(1);                userStatus = (userStatus==null ? "" : userStatus.trim());                userStatus = (userStatus.equals("") ? "Y" : userStatus);                Debug.println("user_status=" + userStatus);                // get ip addr                String ipAddr = rs.getString(2);                // get permit num                int permitNum = rs.getInt(3);                // password                String userPass = rs.getString(4);                // userUniqueNo                String userUniqueNo = rs.getString(5);                // check company users' number                if (getMaxCompanyUser(companyCode) <= getCurrentCompanyUser(companyCode))                {                    request.setAttribute("flag",LoginStatusKeys.COMPANY_USER_OVERFLOW);                    return false ;                }                //check user status                if (!userStatus.equalsIgnoreCase("Y"))                {                    request.setAttribute("flag",LoginStatusKeys.STATUS_FORBID);                    return false ;                }                //check ip_addr                Debug.println("standardIP=" + ipAddr + ",clientIP=" + request.getRemoteAddr());                if (!acceptIP(ipAddr,request.getRemoteAddr()))                {                    request.setAttribute("flag",LoginStatusKeys.IP_FORBID);                    return false ;                }                //check user permit_num;                Debug.println("permitNum=" + permitNum);                if (permitNum>0 &&                  permitNum <= getCurrentTheUser(companyCode,userCode))                {                    request.setAttribute("flag",LoginStatusKeys.USER_OVERFLOW);                    return false ;                }                // get pass to check                if (m_equals(userPass,password))                {                    // 后续处理                    CommonDate today = new CommonDate();                    int visitTime = (int)(System.currentTimeMillis()/60000);                    int loginTime = visitTime;                    LookField lf = new LookField("",SubsystemKeys.SAM);                    sql = "company_code = '" + companyCode +                            "' AND user_unique_no = '" + userUniqueNo + "'";                    // get userName                    String userName = lf.dLookup("body_name",                        "epd_address_book",sql);                    Debug.println("XXXXXXXXXXXXXXXXXXXXXX"+userName);                    //get user 部门                    //以下关于部门的函数由cameran添加,用于提取用户所在部门代码2003-6-1                    String userDept = lf.dLookup("dept_code",                            "epd_address_book", sql);                    userDept = (userDept==null ? "" : userDept.trim());                    String userDeptName =lf.dLookup("dept_name",                            "sam_dept", "dept_code = '"+userDept+"'");                    userDeptName = (userDeptName==null ? "" : userDeptName.trim());                    Debug.println("XXXXXXXXXXXXXXXXXXXXXX"+userDept);                    //以上关于部门的函数由cameran添加,用于提取用户所在部门代码2003-6-1                    // get user 语言                    String language = lf.dLookup("language_type",                            "sam_user_info", sql);                    language = (language==null ? "" : language.trim());                    language = (language.equals("") ? "zh" : language);                    // get defaultpage                    String defaultPage = lf.dLookup("default_page", "sam_user_info", sql);                    // get log no and insert into sam_access_log                    int logNo = 0;                    do                    {                        logNo = CerpGetNo.getNo(companyCode,"sam_access_log");                        sql = "insert into sam_access_log(company_code,"                            + "log_no, user_unique_no, login_date, login_time,"                            + "logout_datetime, online_minutes, ip_addr, user_name)"                            + " values('" + companyCode + "',"                            + logNo + ",'"                            + userUniqueNo + "','"                            + today.getYMD() + "','"                            + today.getHM() + "','',0,'"                            + request.getRemoteAddr() + "','"                            + userName +"')";                        Debug.println("sql="+sql);                    }                    while (!pageQuery.simpleUpdate(sql));                    // get sessionCode and insert into sam_session                    String sessionCode = null;                    do                    {                        sessionCode = String.valueOf((long)(loginTime*java.lang.Math.random()*1000000));                        sql = "insert sam_session(company_code,session_code,year, "                            + " user_unique_no,user_code,user_ip_addr, "                            + " visit_datetime, "                            + " login_datetime, log_no) values('"                            + companyCode + "','" + sessionCode + "','"                            + year + "','" + userUniqueNo + "','" + userCode                            + "','"+request.getRemoteAddr()+"', " + visitTime + ", "                            + loginTime + ", " + logNo + ")";                        Debug.println("sql="+sql);                    }                    while (!pageQuery.simpleUpdate(sql));                    //更新用户权限和菜单                    sql = "select prog_flag,menu_flag from sam_user_info "                      + " where company_code='" + companyCode                      + "' and user_unique_no='" + userUniqueNo + "'" ;                    rs = pageQuery.getData(sql);                    if (rs!=null && rs.next())                    {                      SamUserRight sur = new SamUserRight(companyCode,                        userUniqueNo,rs.getString(1),rs.getString(2));                      sur.update();                    }                    // set session                    HttpSession session = request.getSession();                    session.setAttribute("default_page", defaultPage);                    session.setAttribute("session_code",sessionCode);			        session.setAttribute("company_code",companyCode);			        session.setAttribute("user_code",userCode);                    session.setAttribute("user_name",userName);                    session.setAttribute("user_unique_no",userUniqueNo);			        session.setAttribute("language",language);

⌨️ 快捷键说明

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