Package com.exedosoft.plat.login

Source Code of com.exedosoft.plat.login.LoginMain

package com.exedosoft.plat.login;


import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.exedosoft.plat.ExedoException;
import com.exedosoft.plat.SessionContext;
import com.exedosoft.plat.bo.BOInstance;
import com.exedosoft.plat.bo.DOService;
import com.exedosoft.plat.bo.org.SessionParterFactory;
import com.exedosoft.plat.util.DOGlobals;

public class LoginMain {

  private static Log log = LogFactory.getLog(LoginMain.class);
  private static DOService insertLoginLog = DOService.getService("do_log_insert");
 
  public static final String DEPTUID = "deptuid";
  public static final String ALLAUTH = "allAuth";
  public static final String ALLAUTHMENUS = "allAuthMenus";
  public static final String USERINFO = "userInfo";
 
 
 
  // ////////////刷新当前登录单位
 
  /////////xes专用,刷新对应的角色
 
//  private static DOService findRoleService = DOService.getService("do_bx_role_findbyuserid_xes");
 
  public static Map<String, HttpSession> globalSessions = new HashMap<String, HttpSession>();
 

  static {
    globalSessions = Collections.synchronizedMap(globalSessions);
  }
 
 


  // private static Object lockObj = new Object();

  public static SessionContext makeLogin(BOInstance user,HttpServletRequest request) {
 

    user.putValue("deptuid_login", user.getValue(DEPTUID));
   
    // /注册全局session 用户
    // /只能有一个用户登陆系统。
    HttpSession session = globalSessions.get(user.getUid());
    ////这个策略是踢出原登陆者
    ////另外的策略是不可登陆
    if (session != null && !session.equals(request.getSession())) {
      session.invalidate();
      session = null;
      globalSessions.remove(user.getUid());
     
    }
    if(request.getSession().equals(session)){
      globalSessions.put(user.getUid(), request.getSession());
    }

   
    SessionContext us = (SessionContext) request.getSession().getAttribute(
        USERINFO);
    if(us == null){
      us = new SessionContext();
      request.getSession().setAttribute(USERINFO, us);
    }
   

    us.setSysTreeRoot(user.getName());
    us.setUser(user);
    try {
      us.setIp(DOGlobals.getInstance().getServletContext().getRequest()
          .getRemoteAddr());
      us.setSessionuid(DOGlobals.getInstance().getServletContext().getRequest().getSession().getId());
    } catch (RuntimeException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    }
   
    List allAuthParter = SessionParterFactory.getSessionParter().getParterAuths(user.getUid());
    user.putValue(ALLAUTH, allAuthParter);
   
   
    List allAuthMenus = SessionParterFactory.getSessionParter()
    .getMenuAuthConfigByAccount(user.getUid());
    if(allAuthMenus!=null && !allAuthMenus.isEmpty()){
      user.putValue(ALLAUTHMENUS, allAuthMenus);
    }
   
   
 
    BOInstance aInsertLog = new BOInstance();
    aInsertLog.putValue("userName", user.getName());
    aInsertLog.putValue("ip", us.getIp());
    aInsertLog.putValue("sessionid", us.getSessionuid());
    try {
      // synchronized(lockObj){
      if(insertLoginLog!=null){
        BOInstance biLog = insertLoginLog.invokeUpdate(aInsertLog);
        if(biLog!=null){
          user.putValue("loginlogid", biLog.getUid());
        }
      }
      // }
    } catch (Exception e) {
      // TODO Auto-generated catch block
      log.info(e.fillInStackTrace());
    }
    return us;
  }
 
 

  /**
   * @param args
   * @throws ExedoException
   */
  public static void main(String[] args) throws ExedoException {
    // TODO Auto-generated method stub
    DOService insertLoginLog = DOService.getService("do_log_insert");
    Map map = new HashMap();
    map.put("userName", "tttt");
    map.put("sessionid", "aaaaaaaaaaa");
    insertLoginLog.invokeUpdate(map);

  }

}
TOP

Related Classes of com.exedosoft.plat.login.LoginMain

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.