/// <summary> /// /// </summary> public static ScicLoginInfo GetScicLoginInfo() { if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" && HttpContext.Current.User.Identity.IsAuthenticated) { //因为cookie是全网站公用的,故首先看cookie ScicLoginInfo loginInfo = new ScicLoginInfo(); HttpCookie scicLoginCookie = HttpContext.Current.Request.Cookies[CookieNameOfScicLoginInfo]; if (!scicLoginCookie.IsEmpty()) { loginInfo.UserID = scicLoginCookie[KeyNameOfUserID].ToInt32(); loginInfo.LoginName = HttpUtility.UrlDecode(scicLoginCookie[KeyNameOfLoginName]); loginInfo.UserName = HttpUtility.UrlDecode(scicLoginCookie[KeyNameOfUserName]); loginInfo.OrgID = scicLoginCookie[KeyNameOfOrgID]; //张鎏 添加 loginInfo.OrgUnitName = HttpUtility.UrlDecode(scicLoginCookie[KeyNameOfOrgUnitName]); loginInfo.UserType = (BasicUserType)Enum.Parse(typeof(BasicUserType), HttpUtility.UrlDecode(scicLoginCookie[KeyNameOfUserType])); loginInfo.LoginType = (ScicLoginType)Enum.Parse(typeof(ScicLoginType), HttpUtility.UrlDecode(scicLoginCookie[KeyNameOfLoginType])); string[] arraySelectableLoginTypes = HttpUtility.UrlDecode(scicLoginCookie[KeyNameOfSelectableLoginTypes]).Split(new char[] { ',' }); loginInfo.SelectableLoginTypes = new List <ScicLoginType>(); foreach (string strLoginType in arraySelectableLoginTypes) { loginInfo.SelectableLoginTypes.Add((ScicLoginType)Enum.Parse(typeof(ScicLoginType), strLoginType)); } return(loginInfo); } } else if (!HttpContext.Current.Session[SessionNameOfScicLoginInfo].IsEmpty()) //如果没有用cookie,则从session中查找 { return((ScicLoginInfo)HttpContext.Current.Session[SessionNameOfScicLoginInfo]); } return(null); //"未取到登录信息 }
/// <summary> /// /// </summary> public static void SetScicLoginInfo(ScicLoginInfo loginInfo) { if (GetAuthenticationMode() == "Forms") { HttpCookie scicLoginCookie = new HttpCookie(CookieNameOfScicLoginInfo); scicLoginCookie.Expires = DateTime.Now.AddDays(1); //设置Cookie超时时间 scicLoginCookie[KeyNameOfUserID] = loginInfo.UserID.ToString(); scicLoginCookie[KeyNameOfLoginName] = loginInfo.LoginName; scicLoginCookie[KeyNameOfUserName] = HttpUtility.UrlEncode(loginInfo.UserName);//因为cookie里中文字符在浏览器和web server间直接传递时,会变成乱码,故需要Encode一下 scicLoginCookie[KeyNameOfOrgID] = loginInfo.OrgID; scicLoginCookie[KeyNameOfUserType] = HttpUtility.UrlEncode(loginInfo.UserType.ToString()); scicLoginCookie[KeyNameOfLoginType] = HttpUtility.UrlEncode(loginInfo.LoginType.ToString()); string strSelectableLogintTypes = loginInfo.SelectableLoginTypes[0].ToString(); for (int i = 1; i < loginInfo.SelectableLoginTypes.Count; i++) { strSelectableLogintTypes += "," + loginInfo.SelectableLoginTypes[i].ToString(); } scicLoginCookie[KeyNameOfSelectableLoginTypes] = HttpUtility.UrlEncode(strSelectableLogintTypes); //张鎏 添加 scicLoginCookie[KeyNameOfOrgUnitName] = HttpUtility.UrlEncode(loginInfo.OrgUnitName); HttpContext.Current.Response.AppendCookie(scicLoginCookie); } else { HttpContext.Current.Session[SessionNameOfScicLoginInfo] = loginInfo; } }
/// <summary> /// 初始化一个SCIC平台用户 /// </summary> public static ResultOfInitScicLogin InitScicLogin(DBOperator dbOperator, int userID) { ResultOfInitScicLogin myResult = new ResultOfInitScicLogin(); Bigdesk2010.Business.UserRightManager.IUserRightInfo ur = new Bigdesk2010.Business.UserRightManager.UserRightInfo(dbOperator, userID); if (ur.CountOfUserMatched < 1) { myResult.ResultCode = ResultCodeOfInitScicLogin.用户不存在; myResult.Message = "用户不存在!"; return(myResult); } else if (ur.CountOfUserMatched > 1) { myResult.ResultCode = ResultCodeOfInitScicLogin.用户重复; myResult.Message = "用户重复,请与系统管理员联系!"; return(myResult); } myResult.ResultCode = ResultCodeOfInitScicLogin.唯一用户; ScicLoginInfo workUser = new ScicLoginInfo(); workUser.UserID = ur.UserID; workUser.LoginName = ur.LoginName; workUser.UserName = ur.UserName; workUser.UserType = ur.UserType; workUser.LoginType = ScicLoginType.未定义; workUser.OrgID = string.Empty; workUser.OrgUnitName = ur.OrgUnitName; List <ScicLoginType> selectableLoginTypes = new List <ScicLoginType>(); string sql = string.Empty; SqlParameterCollection spc = dbOperator.CreateSqlParameterCollection(); switch (workUser.UserType) { case BasicUserType.建设单位: sql = "select jsdwid from uepp_jsdw where userid = @UserID"; spc.Add("@UserID", workUser.UserID); DataTable dtJsdw = dbOperator.ExeSqlForDataTable(sql, spc, "uepp_jsdw"); if (dtJsdw.Rows.Count == 1) { workUser.OrgID = dtJsdw.Rows[0]["jsdwid"].ToString(); selectableLoginTypes.Add(ScicLoginType.建设单位用户); } else if (dtJsdw.Rows.Count > 1) { myResult.ResultCode = ResultCodeOfInitScicLogin.基础数据异常; myResult.Message = "建设单位表中用户编号(" + ur.UserID.ToString() + ")重复"; return(myResult); } else { myResult.ResultCode = ResultCodeOfInitScicLogin.基础数据异常; myResult.Message = "建设单位表中用户编号(" + ur.UserID.ToString() + ")不存在"; return(myResult); } break; case BasicUserType.管理用户: selectableLoginTypes.Add(ScicLoginType.管理用户); break; case BasicUserType.经办人: selectableLoginTypes.Add(ScicLoginType.经办人); break; case BasicUserType.企业用户: sql = @"select b.* from uepp_qyjbxx a, uepp_qycsyw b where a.userid = @UserID and a.qyid = b.qyid"; spc.Add("@UserID", workUser.UserID); DataTable dtQyywlx = dbOperator.ExeSqlForDataTable(sql, spc, "uepp_qycsyw"); if (dtQyywlx.Rows.Count > 0) { workUser.OrgID = dtQyywlx.Rows[0]["qyid"].ToString(); foreach (DataRow dr in dtQyywlx.Rows) { QyYwlxCode localYwlx = (QyYwlxCode)Enum.Parse(typeof(QyYwlxCode), dr["csywlxid"].ToString()); switch (localYwlx) { case QyYwlxCode.建筑施工: case QyYwlxCode.设计施工一体化: case QyYwlxCode.园林绿化: if (!selectableLoginTypes.Contains(ScicLoginType.施工企业用户)) { selectableLoginTypes.Add(ScicLoginType.施工企业用户); } break; case QyYwlxCode.工程监理: if (!selectableLoginTypes.Contains(ScicLoginType.监理企业用户)) { selectableLoginTypes.Add(ScicLoginType.监理企业用户); } break; case QyYwlxCode.招标代理: if (!selectableLoginTypes.Contains(ScicLoginType.代理机构用户)) { selectableLoginTypes.Add(ScicLoginType.代理机构用户); } break; case QyYwlxCode.工程勘察: if (!selectableLoginTypes.Contains(ScicLoginType.勘察企业用户)) { selectableLoginTypes.Add(ScicLoginType.勘察企业用户); } break; case QyYwlxCode.工程设计: if (!selectableLoginTypes.Contains(ScicLoginType.设计企业用户)) { selectableLoginTypes.Add(ScicLoginType.设计企业用户); } break; case QyYwlxCode.价咨询: if (!selectableLoginTypes.Contains(ScicLoginType.价咨询用户)) { selectableLoginTypes.Add(ScicLoginType.价咨询用户); } break; case QyYwlxCode.工程检测: if (!selectableLoginTypes.Contains(ScicLoginType.检测机构用户)) { selectableLoginTypes.Add(ScicLoginType.检测机构用户); } break; } } } break; } workUser.SelectableLoginTypes = selectableLoginTypes; if (selectableLoginTypes.Count == 1) { workUser.LoginType = selectableLoginTypes[0]; } myResult.WorkUser = workUser; return(myResult); }