public DataSet GetUserApplications(string userValue,
                                    UserValueType userValueType,
                                    RightMaskType rightMask,
                                    DelegationMaskType delegationMask)
 {
     return(SecurityCheck.GetUserApplications(userValue, userValueType, rightMask, delegationMask));
 }
 public bool IsUserInAllRoles(string userValue,
                              string appCodeName,
                              string roleCodeNames,
                              UserValueType userValueType,
                              DelegationMaskType delegationMask)
 {
     return(SecurityCheck.IsUserInAllRoles(userValue, appCodeName, roleCodeNames, userValueType, delegationMask));
 }
 public bool DoesUserHasAllPermissions(string userValue,
                                       string appCodeName,
                                       string funcCodeNames,
                                       UserValueType userValueType,
                                       DelegationMaskType delegationMask)
 {
     return(SecurityCheck.DoesUserHasAllPermissions(userValue, appCodeName, funcCodeNames, userValueType, delegationMask));
 }
 public DataSet GetUserPermissions(string userValue,
                                   string appCodeName,
                                   UserValueType userValueType,
                                   RightMaskType rightMask,
                                   DelegationMaskType delegationMask)
 {
     return(SecurityCheck.GetUserPermissions(userValue, appCodeName, userValueType, rightMask, delegationMask));
 }
 public DataSet GetFunctionsUsers(string orgRoot,
                                  string appCodeName,
                                  string funcCodeNames,
                                  DelegationMaskType delegationMask,
                                  SidelineMaskType sidelineMask,
                                  string extAttr)
 {
     return(SecurityCheck.GetFunctionsUsers(orgRoot, appCodeName, funcCodeNames, delegationMask, sidelineMask, extAttr));
 }
 public DataSet GetUserFunctionsScopes(string userValue,
                                       string appCodeName,
                                       string funcCodeNames,
                                       UserValueType userValueType,
                                       DelegationMaskType delegationMask,
                                       ScopeMaskType scopeMask)
 {
     return(SecurityCheck.GetUserFunctionsScopes(userValue, appCodeName, funcCodeNames, userValueType, delegationMask, scopeMask));
 }
        /// <summary>
        /// 查询指定部门范围下,指定应用系统中,指定角色下的所有人员
        /// </summary>
        /// <param name="orgRoot">部门范围的全路径,空串时不做限制,多个时用逗号分隔</param>
        /// <param name="appCodeName">应用的英文标识</param>
        /// <param name="roleCodeNames">角色的英文标识,多个时用逗号分隔</param>
        /// <param name="delegationMask">权限委派类型</param>
        /// <param name="sidelineMask">人员职位类型</param>
        /// <param name="extAttr">要求获取的扩展属性</param>
        /// <returns>指定部门范围下,指定应用系统中,指定角色下的所有人员</returns>
        public static OguObjectCollection <IUser> GetUsersFromRoles(string orgRoot, string appCodeName, string roleCodeNames,
                                                                    DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr)
        {
            DataSet ds = AppAdminServiceBroker.Instance.GetRolesUsers(orgRoot, appCodeName, roleCodeNames,
                                                                      delegationMask, SidelineMaskType.All, extAttr);

            var users = Common.BuildObjectsFromTable <IUser>(ds.Tables[0]);

            return(new OguObjectCollection <IUser>(users));
        }
Exemple #8
0
        /// <summary>
        /// 得到当前人员指定功能的,相应服务范围
        /// </summary>
        /// <example>
        /// <code>
        ///		<queryUserFuncScopes app_code_name="asdf" func_code_names="ADD_OBJECT_FUNC" delegation_mask="3" scope_mask="1"/>
        /// </code>
        /// </example>
        protected void DoQueryUserFuncScopes()
        {
            XmlElement root = _XmlRequest.DocumentElement;

            string appCodeName    = root.GetAttribute("app_code_name");
            string funcCodeNames  = root.GetAttribute("func_code_names");
            string delegationMask = root.GetAttribute("delegation_mask");
            string scopeMask      = root.GetAttribute("scope_mask");

            DelegationMaskType dm = DelegationMaskType.All;
            ScopeMaskType      sm = ScopeMaskType.All;

            if (delegationMask != string.Empty)
            {
                dm = (DelegationMaskType)int.Parse(delegationMask);
            }
            if (scopeMask != string.Empty)
            {
                sm = (ScopeMaskType)int.Parse(scopeMask);
            }

            string userID = LogOnUserInfo.UserLogOnName;

            //得到服务范围
            DataTable dt = SecurityCheck.GetUserFunctionsScopes(userID, appCodeName, funcCodeNames, UserValueType.LogonName, dm, sm).Tables[0];

            _XmlResult = new XmlDocument();
            _XmlResult.LoadXml("<DataSet/>");

            XmlHelper.AppendNode(_XmlResult.FirstChild, "Table");

            string strRootOrg;

            string[] arrRootOrg;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                strRootOrg = dt.Rows[i]["DESCRIPTION"].ToString();
                arrRootOrg = strRootOrg.Split(new char[] { ',', ';' });
                for (int j = 0; j < arrRootOrg.Length; j++)
                {
                    if (arrRootOrg[j] != string.Empty)
                    {
                        if (_XmlResult.SelectSingleNode(string.Format(".//ORGANIZATIONS[.='{0}']", arrRootOrg[j])) == null)
                        {
                            XmlHelper.AppendNode(_XmlResult.FirstChild.FirstChild, "ORGANIZATIONS", arrRootOrg[j]);
                        }
                    }
                }
            }
        }
		//查询指定部门下,指定应用中,指定角色,指定类别的所有人员
		private static DataSet InnerGetRolesUsers(string orgRoot,
			string appCodeName,
			string roleCodeNames,
			DelegationMaskType delegationMask,
			SidelineMaskType sidelineMask,
			string extAttr)
		{
			//取原有权限人员
			//参数extAttr已无效
			string strSql = GetRolesUsers_SqlStr(orgRoot, appCodeName, roleCodeNames, sidelineMask, extAttr);

			if (strSql == string.Empty)
			{
				//如果没有表达式
				if (extAttr == string.Empty)
				{
					strSql = @" 
SELECT 'USERS' OBJECTCLASS, OU.PARENT_GUID, OU.USER_GUID, OU.DISPLAY_NAME, OU.OBJ_NAME, OU.INNER_SORT, OU.ORIGINAL_SORT, 
	OU.GLOBAL_SORT, OU.ALL_PATH_NAME, OU.STATUS, OU.SIDELINE, OU.RANK_NAME, OU.ATTRIBUTES, OU.DESCRIPTION, OU.START_TIME, 
	OU.END_TIME, OU.OUSYSDISTINCT1, OU.OUSYSDISTINCT2, OU.OUSYSCONTENT1, OU.OUSYSCONTENT2, OU.OUSYSCONTENT3, U.GUID, 
	U.FIRST_NAME, U.LAST_NAME, U.LOGON_NAME, U.IC_CARD, U.RANK_CODE, U.E_MAIL, U.POSTURAL, U.PERSON_ID, U.SYSDISTINCT1, 
	U.SYSDISTINCT2, U.SYSCONTENT1, U.SYSCONTENT2, U.SYSCONTENT3, RD.CODE_NAME, RD.SORT_ID, RD.NAME 
FROM OU_USERS OU INNER JOIN USERS U 
		ON OU.USER_GUID = U.GUID
	INNER JOIN RANK_DEFINE RD 
		ON U.RANK_CODE = RD.CODE_NAME
WHERE 1>1 ";
					return OGUCommonDefine.ExecuteDataset(strSql);
				}
				else
				{
					return OGUReader.GetObjectsDetail("USERS",
						string.Empty,
						SearchObjectColumn.SEARCH_LOGON_NAME,
						string.Empty,
						SearchObjectColumn.SEARCH_NULL,
						extAttr);
				}
			}


			DataSet returnDS = null;
			if (extAttr == string.Empty)
			{
				strSql += "\n ORDER BY OU.GLOBAL_SORT, RD.SORT_ID, OU.SIDELINE";
				returnDS = OGUCommonDefine.ExecuteDataset(strSql);
			}
			else
			{
				DataTable dt = OGUCommonDefine.ExecuteDataset(strSql).Tables[0];
				string IDs = GetColumnValue(dt, "USER_GUID");
				returnDS = OGUReader.GetObjectsDetail("USERS",
					IDs,
					SearchObjectColumn.SEARCH_GUID,
					string.Empty,
					SearchObjectColumn.SEARCH_GUID,
					extAttr);

				//过滤非选定的职位
				string strIDpIDs = string.Empty;
				foreach (DataRow row in dt.Rows)
				{
					if (strIDpIDs == string.Empty)
						strIDpIDs += row["USER_GUID"].ToString() + row["PARENT_GUID"].ToString();
					else
						strIDpIDs += "," + row["USER_GUID"].ToString() + row["PARENT_GUID"].ToString();

				}
				for (int i = returnDS.Tables[0].Rows.Count - 1; i >= 0; i--)
				{
					DataRow row2 = returnDS.Tables[0].Rows[i];
					//str = row2["USER_GUID"].ToString() + row2["PARENT_GUID"].ToString();//Delete By Yuanyong 20080724
					string str = row2["GUID"].ToString() + row2["PARENT_GUID"].ToString();// Add By yuanyong 20080724
					if (strIDpIDs.IndexOf(str) == -1)
						returnDS.Tables[0].Rows.Remove(row2);
				}
				returnDS.AcceptChanges();

			}


			//读委派权限类人员??
			DataSet delegateDS = null;
			if ((returnDS.Tables[0].Rows.Count) > 0 && (delegationMask & DelegationMaskType.Delegated) != DelegationMaskType.None)
			{
				//得到当前角色下,有效的委派
				strSql = @"
SELECT * 
FROM DELEGATIONS D, ROLES R, APPLICATIONS A
WHERE D.ROLE_ID = R.ID
	AND R.APP_ID = A.ID
	AND A.CODE_NAME = {0}
	AND R.CODE_NAME IN ({1})
	AND R.ALLOW_DELEGATE = 'y'
	AND D.START_TIME < GETDATE()
	AND D.END_TIME > GETDATE()
ORDER BY D.ROLE_ID, D.SOURCE_ID;";
				strSql = string.Format(strSql,
					TSqlBuilder.Instance.CheckQuotationMark(appCodeName, true),
					OGUCommonDefine.AddMulitStrWithQuotationMark(roleCodeNames));

				DataSet ds = OGUCommonDefine.ExecuteDataset(strSql);


				if (ds.Tables[0].Rows.Count > 0)
				{
					string dUserIDs = "''";
					string strTemp = string.Empty;
					string strTemp2 = string.Empty;
					foreach (DataRow row in ds.Tables[0].Rows)
					{
						//委派者属于角色
						strTemp = string.Format("[USER_GUID] = '{0}'", row["SOURCE_ID"]);
						//被委派者不属于角色
						strTemp2 = string.Format("[USER_GUID] = '{0}'", row["TARGET_ID"]);
						if (returnDS.Tables[0].Select(strTemp).Length > 0 && returnDS.Tables[0].Select(strTemp2).Length == 0)
						{
							dUserIDs += string.Format(",'{0}'", row["TARGET_ID"]);
						}

					}
					//读被委派者
					if (dUserIDs.Length > 2)
					{
						string strSql2 = string.Empty;
						if (extAttr == string.Empty)
						{
							strSql2 = @"
SELECT 'USERS' OBJECTCLASS, OU.PARENT_GUID, OU.USER_GUID, OU.DISPLAY_NAME, OU.OBJ_NAME, OU.INNER_SORT, OU.ORIGINAL_SORT, 
	OU.GLOBAL_SORT, OU.ALL_PATH_NAME, OU.STATUS, OU.SIDELINE, OU.RANK_NAME, OU.ATTRIBUTES, OU.DESCRIPTION, OU.START_TIME, 
	OU.END_TIME, OU.OUSYSDISTINCT1, OU.OUSYSDISTINCT2, OU.OUSYSCONTENT1, OU.OUSYSCONTENT2, OU.OUSYSCONTENT3 ,U.GUID, 
	U.FIRST_NAME, U.LAST_NAME, U.LOGON_NAME, U.IC_CARD, U.RANK_CODE, U.E_MAIL, U.POSTURAL, U.PERSON_ID, U.SYSDISTINCT1, 
	U.SYSDISTINCT2, U.SYSCONTENT1, U.SYSCONTENT2, U.SYSCONTENT3, RD.CODE_NAME, RD.SORT_ID, RD.NAME ";
						}
						else
						{
							strSql2 = @"OU.PARENT_GUID, OU.USER_GUID";
						}

						strSql2 += string.Format(@" 
FROM OU_USERS OU
	INNER JOIN USERS U 
		ON OU.USER_GUID = U.GUID
	INNER JOIN RANK_DEFINE RD 
		ON U.RANK_CODE = RD.CODE_NAME
WHERE OU.USER_GUID IN ({0})
	AND OU.STATUS = 1 
	AND GETDATE() BETWEEN OU.START_TIME AND OU.END_TIME
ORDER BY OU.GLOBAL_SORT, RD.SORT_ID, OU.SIDELINE", dUserIDs);
						//***********
						//委派的人不过滤机构:原有权限在范围中,认定被委派人在范围中。
						//***********

						//处理兼职
						if ((sidelineMask & SidelineMaskType.All) != SidelineMaskType.All)
						{
							if (sidelineMask == SidelineMaskType.NotSideline) //主职
							{
								strSql2 += " AND SIDELINE = 0";
							}

							if (sidelineMask == SidelineMaskType.Sideline) //兼职
							{
								strSql2 += " AND SIDELINE = 1";
							}
						}
						delegateDS = OGUCommonDefine.ExecuteDataset(strSql2);

						if (extAttr != string.Empty)
						{
							string IDs = GetColumnValue(delegateDS.Tables[0], "USER_GUID");
							string pIDs = GetColumnValue(delegateDS.Tables[0], "PARENT_GUID");
							delegateDS = OGUReader.GetObjectsDetail("USERS",
								IDs,
								SearchObjectColumn.SEARCH_GUID,
								string.Empty,
								SearchObjectColumn.SEARCH_GUID,
								extAttr);
						}
					}
				}

			}

			if (delegationMask == DelegationMaskType.Delegated)
			{
				if (delegateDS == null)
				{
					if (extAttr == string.Empty)
					{
						string strSql3 = @" 
SELECT 'USERS' OBJECTCLASS, OU.PARENT_GUID, OU.USER_GUID, OU.DISPLAY_NAME, OU.OBJ_NAME, OU.INNER_SORT, OU.ORIGINAL_SORT, 
	OU.GLOBAL_SORT, OU.ALL_PATH_NAME, OU.STATUS, OU.SIDELINE, OU.RANK_NAME, OU.ATTRIBUTES, OU.DESCRIPTION, OU.START_TIME, 
	OU.END_TIME, OU.OUSYSDISTINCT1, OU.OUSYSDISTINCT2, OU.OUSYSCONTENT1, OU.OUSYSCONTENT2, OU.OUSYSCONTENT3 ,U.GUID, 
	U.FIRST_NAME, U.LAST_NAME, U.LOGON_NAME, U.IC_CARD, U.RANK_CODE, U.E_MAIL, U.POSTURAL, U.PERSON_ID, U.SYSDISTINCT1, 
	U.SYSDISTINCT2, U.SYSCONTENT1, U.SYSCONTENT2, U.SYSCONTENT3, RD.CODE_NAME, RD.SORT_ID, RD.NAME 
FROM OU_USERS OU
	INNER JOIN USERS U 
		ON OU.USER_GUID = U.GUID
	INNER JOIN RANK_DEFINE RD 
		ON U.RANK_CODE = RD.CODE_NAME
WHERE 1>1 ";
						delegateDS = OGUCommonDefine.ExecuteDataset(strSql3);
					}
					else
					{
						delegateDS = OGUReader.GetObjectsDetail("",
							string.Empty,
							SearchObjectColumn.SEARCH_GUID,
							string.Empty,
							SearchObjectColumn.SEARCH_NULL,
							extAttr);
					}
				}
				returnDS = delegateDS;
			}
			else if (delegationMask == DelegationMaskType.All)
			{
				if (delegateDS != null)
				{
					returnDS.Merge(delegateDS);
				}
			}

			return returnDS;

		}
		//判断人员是否在指定应用,指定角色中
		private static bool IsUserInAllRoles(string userID,
			string userAllPath,
			string appCodeName,
			string roleCodeNames,
			DelegationMaskType delegationMask)
		{
			//modified by yangrui 2005.1
			//新版程序
			//不调机构人员接口,直接读库进行表连接

			string strSql = GetUserRoles_SqlStr(userID, userAllPath, appCodeName, RightMaskType.All, delegationMask, roleCodeNames);

			if (strSql == string.Empty)
				return false;

			strSql = string.Format(@"
SELECT COUNT(*) FROM ({0} AND R.CODE_NAME IN ({1}) AND R.APP_ID = (SELECT ID FROM APPLICATIONS WHERE CODE_NAME = {2}) ) AS T1 ",
				strSql,
				OGUCommonDefine.AddMulitStrWithQuotationMark(roleCodeNames),
				TSqlBuilder.Instance.CheckQuotationMark(appCodeName, true));

			object obj = OGUCommonDefine.ExecuteScalar(strSql);

			if (obj != null && (int)obj == roleCodeNames.Split(',').Length)
				return true;

			return false;
		}
		//查询拥有指定功能的所有人员
		private static DataSet InnerGetFunctionsUsers(string orgRoot,
			string appCodeName,
			string funcCodeNames,
			DelegationMaskType delegationMask,
			SidelineMaskType sidelineMask,
			string extAttr)
		{
			//ExceptionHelper.CheckStringIsNullOrEmpty(orgRoot, "orgRoot");
			//ExceptionHelper.CheckStringIsNullOrEmpty(appCodeName, "appCodeName");
			//ExceptionHelper.CheckStringIsNullOrEmpty(funcCodeNames, "funcCodeNames");
			//得到拥有功能的所有角色
			DataTable roleDT = GetFunctionsRoles(appCodeName, funcCodeNames).Tables[0];
			DataSet result = null;
			//if (roleDT.Rows.Count > 0)
			{
				string roleCodeNames = GetColumnValue(roleDT, "CODE_NAME");

				result = InnerGetRolesUsers(orgRoot, appCodeName, roleCodeNames, delegationMask, sidelineMask, extAttr);
			}
			return result;
		}
 public bool IsUserInAllRoles(string userValue, string appCodeName, string roleCodeNames, UserValueType userValueType, DelegationMaskType delegationMask)
 {
     object[] results = this.Invoke("IsUserInAllRoles", new object[] {
                 userValue,
                 appCodeName,
                 roleCodeNames,
                 userValueType,
                 delegationMask});
     return ((bool)(results[0]));
 }
 public System.Data.DataSet GetUserApplications(string userValue, UserValueType userValueType, RightMaskType rightMask, DelegationMaskType delegationMask)
 {
     object[] results = this.Invoke("GetUserApplications", new object[] {
                 userValue,
                 userValueType,
                 rightMask,
                 delegationMask});
     return ((System.Data.DataSet)(results[0]));
 }
 public System.Data.DataSet GetUserApplications(string userValue, UserValueType userValueType, RightMaskType rightMask, DelegationMaskType delegationMask)
 {
     object[] results = this.Invoke("GetUserApplications", new object[] {
         userValue,
         userValueType,
         rightMask,
         delegationMask
     });
     return((System.Data.DataSet)(results[0]));
 }
 /// <remarks/>
 public System.IAsyncResult BeginGetUserFunctionsScopes(string userValue, string appCodeName, string funcCodeNames, UserValueType userValueType, DelegationMaskType delegationMask, ScopeMaskType scopeMask, System.AsyncCallback callback, object asyncState)
 {
     return(this.BeginInvoke("GetUserFunctionsScopes", new object[] {
         userValue,
         appCodeName,
         funcCodeNames,
         userValueType,
         delegationMask,
         scopeMask
     }, callback, asyncState));
 }
		//生成语句:查询指定人员,在指定应用具有的权限(功能)
		private static string GetUserPermissions_SqlStr(string userID, string userAllPath, string appCodeName, RightMaskType rightMask, DelegationMaskType delegationMask)
		{
			//得到人员所拥有的角色
			string strSql = GetUserRoles_SqlStr(userID, userAllPath, appCodeName, rightMask, delegationMask, string.Empty);

			if (strSql != string.Empty)
			{
				strSql = string.Format(@"
SELECT DISTINCT F.ID, F.APP_ID, F.NAME, F.CODE_NAME, F.DESCRIPTION, F.SORT_ID, F.CLASSIFY, F.INHERITED 
FROM FUNCTIONS F, ROLE_TO_FUNCTIONS RTF
WHERE F.ID = RTF.FUNC_ID
	AND RTF.ROLE_ID IN (SELECT ID FROM ({0}) AS T1) ", strSql);
			}
			else
				strSql = "SELECT F.ID, F.APP_ID, F.NAME, F.CODE_NAME, F.DESCRIPTION, F.SORT_ID, F.CLASSIFY, F.INHERITED FROM FUNCTIONS F WHERE 1>1";

			return strSql;
		}
		//查询指定人员的应用角色信息
		private static DataSet GetUserApplicationsRoles(string userID, string userAllPath, RightMaskType rightMask, DelegationMaskType delegationMask)
		{
			//modified by yangrui 2005.1
			string strSql = GetUserRoles_SqlStr(userID, userAllPath, string.Empty, rightMask, delegationMask, string.Empty);
			if (strSql == string.Empty)
			{
				strSql = @"
SELECT DISTINCT A.NAME APP_NAME, A.CODE_NAME APP_CODE_NAME, A.RESOURCE_LEVEL APP_RESOURCE_LEVEL, R.ID, R.APP_ID, R.NAME, R.CODE_NAME, 
	R.DESCRIPTION, R.CLASSIFY, R.SORT_ID, R.ALLOW_DELEGATE, R.INHERITED
FROM APPLICATIONS A 
	INNER JOIN ROLES R ON R.APP_ID = A.ID
WHERE 1>1 ";
			}
			else
			{
				strSql = string.Format(@"
SELECT DISTINCT A.NAME APP_NAME, A.CODE_NAME APP_CODE_NAME, A.RESOURCE_LEVEL APP_RESOURCE_LEVEL, R.ID, R.APP_ID, R.NAME, R.CODE_NAME, 
	R.DESCRIPTION, R.CLASSIFY, R.SORT_ID, R.ALLOW_DELEGATE, R.INHERITED 
FROM ({0}) AS R 
	INNER JOIN APPLICATIONS A ON R.APP_ID = A.ID ", strSql);
				strSql += "\n ORDER BY RESOURCE_LEVEL, CLASSIFY DESC, R.SORT_ID";
			}

			return OGUCommonDefine.ExecuteDataset(strSql);

		}
		/// <summary>
		/// 得到用户所在的表达式IDs(包括委派),本函数进行原始权限和委派权限的相关处理,细节处理由其重载函数完成
		/// </summary>
		/// <param name="userID"></param>
		/// <param name="appCodeName"></param>
		/// <param name="userAllPath"></param>
		/// <param name="rightMask"></param>
		/// <param name="delegationMask"></param>
		/// <param name="roleCodeNames">角色范围限定,由角色的code_name串表示</param>
		/// <returns></returns>
		private static string GetUserExpressionIDs_SqlStr(string userID,
			string userAllPath,
			string appCodeName,
			RightMaskType rightMask,
			DelegationMaskType delegationMask,
			string roleCodeNames)
		{
			if (userID == string.Empty)
				return string.Empty;

			//原始的权限对应的表达式IDs
			string strExpIDs_O = string.Empty;
			//委派的权限对应的表达式IDs
			string strExpIDs_D = string.Empty;

			string strSql = string.Empty;
			DataTable expDT = null;

			if ((delegationMask & DelegationMaskType.Original) != DelegationMaskType.None)
			{
				strSql = GetUserExpressionIDs_SqlStr2(userID, userAllPath, appCodeName, rightMask, string.Empty);

				if (strSql != string.Empty)
				{
					expDT = OGUCommonDefine.ExecuteDataset(strSql).Tables[0];
					foreach (DataRow row in expDT.Rows)
					{
						if (row[0].ToString() == string.Empty)
							continue;
						if (strExpIDs_O == string.Empty)
							strExpIDs_O = "'" + row[0].ToString() + "'";
						else
							strExpIDs_O += ",'" + row[0].ToString() + "'";
					}
				}
				else
					return string.Empty;
			}

			string strSql2 = string.Empty;

			//读委派权限类人员??
			if ((delegationMask & DelegationMaskType.Delegated) != DelegationMaskType.None)
			{

				strSql2 = GetValidDelegationsForTarget_SqlStr(userID, appCodeName, roleCodeNames, rightMask);

				DataSet ds = OGUCommonDefine.ExecuteDataset(strSql2);

				if (ds.Tables[0].Rows.Count > 0)
				{
					foreach (DataRow row in ds.Tables[0].Rows)
					{

						//委派人 在 相应的角色 中, 才能证明被委派在此角色中。 所以设置了row["ROLE_ID"].ToString()参数。
						strSql2 = GetUserExpressionIDs_SqlStr2(row["SOURCE_ID"].ToString(),
							string.Empty,
							appCodeName,
							rightMask,
							row["ROLE_ID"].ToString());

						if (strSql2 != string.Empty)
						{
							expDT = OGUCommonDefine.ExecuteDataset(strSql2).Tables[0];
							foreach (DataRow row2 in expDT.Rows)
							{
								if (row2[0].ToString() == string.Empty)
									continue;
								if (strExpIDs_D == string.Empty)
									strExpIDs_D = "'" + row2[0].ToString() + "'";
								else
									strExpIDs_D += ",'" + row2[0].ToString() + "'";
							}
						}
					}
				}

			}

			//合并结果
			//			strRoleIDs_O += "," + strRoleIDs_D ;
			if (strExpIDs_O != string.Empty && strExpIDs_D != string.Empty)
				strSql = string.Format("{0},{1}", strExpIDs_O, strExpIDs_D);
			else if (strExpIDs_O == string.Empty && strExpIDs_D == string.Empty)
				strSql = string.Empty;
			else
				strSql = strExpIDs_O + strExpIDs_D;

			return strSql;

		}
		//查询指定人员,在指定应用具有的权限(功能)
		private static DataSet GetUserPermissions(string userID, string userAllPath, string appCodeName, RightMaskType rightMask, DelegationMaskType delegationMask)
		{
			string strSql = GetUserPermissions_SqlStr(userID, userAllPath, appCodeName, rightMask, delegationMask);
			strSql += "\n ORDER BY APP_ID, CLASSIFY DESC, SORT_ID";
			return OGUCommonDefine.ExecuteDataset(strSql);
		}
		/// <summary>
		/// 
		/// </summary>
		/// <param name="userID"></param>
		/// <param name="appCodeName"></param>
		/// <param name="userAllPath"></param>
		/// <param name="rightMask"></param>
		/// <param name="delegationMask"></param>
		/// <param name="roleCodeNames">角色范围限定,由角色的code_name串表示</param>
		/// <returns></returns>
		private static string GetUserRoles_SqlStr(string userID,
			string userAllPath,
			string appCodeName,
			RightMaskType rightMask,
			DelegationMaskType delegationMask,
			string roleCodeNames)
		{
			string strSql = GetUserExpressionIDs_SqlStr(userID, userAllPath, appCodeName, rightMask, delegationMask, roleCodeNames);

			if (strSql != string.Empty)
				strSql = string.Format(@"
SELECT DISTINCT R.ID, R.APP_ID, R.NAME, R.CODE_NAME, R.DESCRIPTION, R.CLASSIFY, R.SORT_ID, R.ALLOW_DELEGATE, R.INHERITED 
FROM ROLES R, EXPRESSIONS E
WHERE R.ID = E.ROLE_ID
	AND E.ID IN ({0})", strSql);

			return strSql;
		}
		private static DataSet GetUserRoles(string userID,
			string userAllPath,
			string appCodeName,
			RightMaskType rightMask,
			DelegationMaskType delegationMask)
		{
			return GetUserRoles(userID, userAllPath, appCodeName, rightMask, delegationMask, string.Empty);
		}
		//2009-6-11修改人员角色信息入口,返回dataset结果,子方法为拼sql语句
		/// <summary>
		/// 查询指定用户,在指定应用中所拥有的角色
		/// </summary>
		/// <param name="userID"></param>
		/// <param name="appCodeName"></param>
		/// <param name="userAllPath"></param>
		/// <param name="rightMask"></param>
		/// <param name="delegationMask"></param>
		/// <param name="roleCodeNames">角色范围限定,由角色的code_name串表示</param>
		/// <returns></returns>
		private static DataSet GetUserRoles(string userID,
			string userAllPath,
			string appCodeName,
			RightMaskType rightMask,
			DelegationMaskType delegationMask,
			string roleCodeNames)
		{
			//沈峥优化,根据OA常用情况,去掉了Deligate的判断,如果appCodeName为空,走优化分支
			DataSet result = null;

			if (string.IsNullOrEmpty(userAllPath))
				result = ExtSecurityCheck.GetUserAppRoles(userID, appCodeName, RightMaskType.All);
			else
			{
				string strSql = string.Empty;
				if (appCodeName != string.Empty)
					strSql = GetUserRoles_SqlStr(userID, userAllPath, appCodeName, rightMask, delegationMask, roleCodeNames);

				if (strSql != string.Empty)
					strSql += "\n ORDER BY R.CLASSIFY DESC, R.SORT_ID";
				else
					strSql = @"
SELECT R.ID, R.APP_ID, R.NAME, R.CODE_NAME, R.DESCRIPTION, R.CLASSIFY, R.SORT_ID, R.ALLOW_DELEGATE, R.INHERITED 
FROM ROLES R 
WHERE 1>1";

				result = OGUCommonDefine.ExecuteDataset(strSql);
			}

			return result;
		}
		/// <summary>
		/// 查询指定部门下,指定应用中,指定角色的所有人员
		/// </summary>
		/// <param name="orgRoot">根部门的全路径,空串时不限制部门</param>
		/// <param name="appCodeName">应用的英文标识</param>
		/// <param name="roleCodeNames">角色的英文标识,多个时用逗号分隔</param>
		/// <param name="delegationMask">委派类型</param>
		/// <returns></returns>
		public static DataSet GetRolesUsers(string orgRoot, string appCodeName, string roleCodeNames, DelegationMaskType delegationMask)
		{
			return GetRolesUsers(orgRoot, appCodeName, roleCodeNames, delegationMask, SidelineMaskType.All);
		}
		//查询指定人员的应用角色信息
		private static DataSet GetUserApplications(string userID, string userAllPath, RightMaskType rightMask, DelegationMaskType delegationMask)
		{
			string strSql = GetUserApplications_SqlStr(userID, userAllPath, rightMask, delegationMask);
			strSql += "\n ORDER BY RESOURCE_LEVEL, SORT_ID";
			return OGUCommonDefine.ExecuteDataset(strSql);
		}
 public bool IsUserInAllRoles(string userValue, string appCodeName, string roleCodeNames, UserValueType userValueType, DelegationMaskType delegationMask)
 {
     object[] results = this.Invoke("IsUserInAllRoles", new object[] {
         userValue,
         appCodeName,
         roleCodeNames,
         userValueType,
         delegationMask
     });
     return((bool)(results[0]));
 }
		//生成语句:查询指定人员的应用角色信息
		private static string GetUserApplications_SqlStr(string userID, string userAllPath, RightMaskType rightMask, DelegationMaskType delegationMask)
		{
			//modified by yangrui 2005.1
			string strSql = GetUserRoles_SqlStr(userID, userAllPath, String.Empty, rightMask, delegationMask, string.Empty);

			if (strSql != string.Empty)
			{
				strSql = string.Format(@"
SELECT DISTINCT A.ID, A.NAME, A.CODE_NAME, A.DESCRIPTION, A.SORT_ID, A.RESOURCE_LEVEL, A.CHILDREN_COUNT, A.ADD_SUBAPP, A.USE_SCOPE, A.INHERITED_STATE
FROM APPLICATIONS A 
WHERE ID IN (SELECT APP_ID FROM ({0}) AS T1)", strSql);
			}
			else
			{
				strSql = @"
SELECT A.ID, A.NAME, A.CODE_NAME, A.DESCRIPTION, A.SORT_ID, A.RESOURCE_LEVEL, A.CHILDREN_COUNT, A.ADD_SUBAPP, A.USE_SCOPE, A.INHERITED_STATE 
FROM APPLICATIONS A 
WHERE 1>1";
			}
			return strSql;
		}
		/// <summary>
		/// 查询指定人员,在指定应用,指定角色中所拥有的服务范围
		/// </summary>
		/// <param name="userValue">用户身份标识(由userValueType参数指定类型)</param>
		/// <param name="appCodeName">应用的英文标识</param>
		/// <param name="funcCodeNames">功能的英文标识,多个时用逗号分隔</param>
		/// <param name="userValueType">用户身份标识类型(UserValueType.LogonName:登录名, UserValueType.AllPath:全路径)</param>
		/// <param name="delegationMask">委派类型</param>
		/// <returns></returns>
		public static DataSet GetUserFunctionsScopes(string userValue,
			string appCodeName,
			string funcCodeNames,
			UserValueType userValueType,
			DelegationMaskType delegationMask)
		{
			return GetUserFunctionsScopes(userValue, appCodeName, funcCodeNames, userValueType, delegationMask, ScopeMaskType.All);
		}
		/// <summary>
		/// 生成语句:查询指定人员,在指定应用,指定角色中所拥有的服务范围
		/// </summary>
		/// <param name="userID"></param>
		/// <param name="userAllPath"></param>
		/// <param name="appCodeName"></param>
		/// <param name="roleCodeNames"></param>
		/// <param name="delegationMask"></param>
		/// <param name="scopeMask"></param>
		/// <returns></returns>
		private static string GetUserRolesScopes_SqlStr(string userID,
			string userAllPath,
			string appCodeName,
			string roleCodeNames,
			DelegationMaskType delegationMask,
			ScopeMaskType scopeMask)
		{
			//modified by yangrui 2005.1
			string strSql = string.Format("SELECT ISNULL(USE_SCOPE, 'n') FROM APPLICATIONS WHERE CODE_NAME = {0}",
				TSqlBuilder.Instance.CheckQuotationMark(appCodeName, true));

			object obj = OGUCommonDefine.ExecuteScalar(strSql);

			if (obj == null || obj.ToString().ToLower() == "n")
			{
				return string.Empty;
			}

			string expIDsSql = GetUserExpressionIDs_SqlStr(userID, userAllPath, appCodeName, RightMaskType.All, delegationMask, roleCodeNames);
			strSql = string.Empty;
			if (expIDsSql != string.Empty)
			{
				strSql = string.Format(@"
SELECT ID, APP_ID, NAME, CODE_NAME, EXPRESSION, DESCRIPTION, CLASSIFY, SORT_ID, INHERITED  
FROM SCOPES 
WHERE ID IN 
	(
		SELECT ES.SCOPE_ID
		FROM EXP_TO_SCOPES ES INNER JOIN EXPRESSIONS E ON ES.EXP_ID = E.ID
			INNER JOIN ROLES R ON E.ROLE_ID = R.ID 
			INNER JOIN APPLICATIONS A ON R.APP_ID = A.ID
			WHERE ES.EXP_ID IN ({0}) AND A.CODE_NAME = {1} AND R.CODE_NAME IN ({2}) 
	)",
					expIDsSql, TSqlBuilder.Instance.CheckQuotationMark(appCodeName, true),
					OGUCommonDefine.AddMulitStrWithQuotationMark(roleCodeNames));
				string classCondition = string.Empty;
				if (scopeMask == ScopeMaskType.OrgScope)
					classCondition = "\n AND (CLASSIFY = 'y') ";
				if (scopeMask == ScopeMaskType.DataScope)
					classCondition = "\n AND (CLASSIFY = 'n') ";
				if (classCondition != string.Empty)
					strSql += classCondition;

				//strSql = string.Format(strSql, OGUCommonDefine.AddMulitStrWithQuotationMark(expIDs));
			}

			return strSql;

		}
 public System.Data.DataSet GetFunctionsUsers(string orgRoot, string appCodeName, string funcCodeNames, DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr)
 {
     object[] results = this.Invoke("GetFunctionsUsers", new object[] {
                 orgRoot,
                 appCodeName,
                 funcCodeNames,
                 delegationMask,
                 sidelineMask,
                 extAttr});
     return ((System.Data.DataSet)(results[0]));
 }
        /// <summary>
        /// 查询指定部门范围下,指定应用系统中,指定角色下的所有人员
        /// </summary>
        /// <param name="orgRoot">部门范围的全路径,空串时不做限制,多个时用逗号分隔</param>
        /// <param name="appCodeName">应用的英文标识</param>
        /// <param name="roleCodeNames">角色的英文标识,多个时用逗号分隔</param>
        /// <param name="delegationMask">权限委派类型</param>
        /// <param name="sidelineMask">人员职位类型</param>
        /// <param name="extAttr">要求获取的扩展属性</param>
        /// <returns>指定部门范围下,指定应用系统中,指定角色下的所有人员</returns>
        public static OguObjectCollection<IUser> GetUsersFromRoles(string orgRoot, string appCodeName, string roleCodeNames,
            DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr)
        {
            DataSet ds = AppAdminServiceBroker.Instance.GetRolesUsers(orgRoot, appCodeName, roleCodeNames,
                    delegationMask, SidelineMaskType.All, extAttr);

            var users = Common.BuildObjectsFromTable<IUser>(ds.Tables[0]);
            return new OguObjectCollection<IUser>(users);
        }
 public bool DoesUserHasAllPermissions(string userValue, string appCodeName, string funcCodeNames, UserValueType userValueType, DelegationMaskType delegationMask)
 {
     object[] results = this.Invoke("DoesUserHasAllPermissions", new object[] {
                 userValue,
                 appCodeName,
                 funcCodeNames,
                 userValueType,
                 delegationMask});
     return ((bool)(results[0]));
 }
 public System.Data.DataSet GetUserPermissions2(string userValue, string appCodeName, UserValueType userValueType, RightMaskType rightMask, DelegationMaskType delegationMask, bool includeMatrixUsers)
 {
     object[] results = this.Invoke("GetUserPermissions2", new object[] {
         userValue,
         appCodeName,
         userValueType,
         rightMask,
         delegationMask,
         includeMatrixUsers
     });
     return((System.Data.DataSet)(results[0]));
 }
 public System.Data.DataSet GetUserFunctionsScopes(string userValue, string appCodeName, string funcCodeNames, UserValueType userValueType, DelegationMaskType delegationMask, ScopeMaskType scopeMask)
 {
     object[] results = this.Invoke("GetUserFunctionsScopes", new object[] {
                 userValue,
                 appCodeName,
                 funcCodeNames,
                 userValueType,
                 delegationMask,
                 scopeMask});
     return ((System.Data.DataSet)(results[0]));
 }
Exemple #34
0
        public DataSet GetUserPermissions2(string userValue, string appCodeName, UserValueType userValueType, RightMaskType rightMask, DelegationMaskType delegationMask, bool includeMatrixUsers)
        {
            string[] schemaTypes = SchemaInfo.FilterByCategory("Roles").ToSchemaNames();
            string[] userIDs     = OGUReaderService.SplitObjectValues(userValue);

            SCObjectAndRelationCollection users = OGUReaderService.GetSearchAdapter(GetSearchOUIDType(userValueType), SchemaInfo.FilterByCategory("Users").ToSchemaNames(), userIDs, false).QueryObjectsAndRelations();

            SchemaObjectCollection permissions = SCSnapshotAdapter.Instance.QueryUserBelongToPermissions(schemaTypes, appCodeName, users.ToIDArray(), false, DateTime.MinValue);

            if (includeMatrixUsers)
            {
                string[] permissionTypes = SchemaInfo.FilterByCategory("Permissions").ToSchemaNames();

                List <string> roleIDsInMatrix = GetUserRoleIDsInMatrix(users.ToIDArray(), appCodeName);

                SCObjectAndRelationCollection permissionsInMatrixRelation = SCSnapshotAdapter.Instance.QueryObjectAndRelationByParentIDs(permissionTypes, roleIDsInMatrix.ToArray(), false, true, false, DateTime.MinValue);

                InSqlClauseBuilder inBuilder = new InSqlClauseBuilder("ID");

                List <string> permissionInMatrixIDs = new List <string>();

                foreach (SCObjectAndRelation pim in permissionsInMatrixRelation)
                {
                    if (permissions.ContainsKey(pim.ID) == false)
                    {
                        inBuilder.AppendItem(pim.ID);
                    }
                }

                if (inBuilder.IsEmpty == false)
                {
                    SchemaObjectCollection permissionsInMatrix = SchemaObjectAdapter.Instance.Load(inBuilder, DateTime.MinValue);

                    permissions.CopyFrom(permissionsInMatrix);
                }
            }

            DataSet ds = new DataSet();

            ds.Tables.Add(QueryHelper.GetAppObjectTableBuilder(schemaTypes).Convert(permissions));

            return(ds);
        }
		//判断人员是否在指定应用,指定角色中
		private static bool IsUserInRoles(string userID,
			string userAllPath,
			string appCodeName,
			string roleCodeNames,
			DelegationMaskType delegationMask)
		{
			//ExceptionHelper.CheckStringIsNullOrEmpty(userID, "userID");
			//ExceptionHelper.CheckStringIsNullOrEmpty(appCodeName, "appCodeName");
			//ExceptionHelper.CheckStringIsNullOrEmpty(roleCodeNames, "roleCodeNames");

			string strSql = GetUserRoles_SqlStr(userID, userAllPath, appCodeName, RightMaskType.All, delegationMask, roleCodeNames);

			if (strSql == string.Empty)
				return false;

			strSql = string.Format(@"
SELECT COUNT(*) FROM ({0} AND R.CODE_NAME IN ({1}) AND R.APP_ID = (SELECT ID FROM APPLICATIONS WHERE CODE_NAME = {2})) AS T1 ",
				strSql, OGUCommonDefine.AddMulitStrWithQuotationMark(roleCodeNames), TSqlBuilder.Instance.CheckQuotationMark(appCodeName, true));
			object obj = OGUCommonDefine.ExecuteScalar(strSql);

			if (obj != null && (int)obj > 0)
				return true;

			return false;
		}
		//查询指定人员,在指定应用中,是否拥有指定的功能权限(有一个即可)
		private static bool DoesUserHasPermissions(string userID,
			string userAllPath,
			string appCodeName,
			string funcCodeNames,
			DelegationMaskType delegationMask)
		{
			//查找函数对应的角色,把funcCodeNames转成roleCodeNames
			DataTable roleCodeNameDT = GetFunctionsRoles(appCodeName, funcCodeNames).Tables[0];

			//ExceptionHelper.FalseThrow(roleCodeNameDT.Rows.Count > 0, 
			//	string.Format("应用名称【{0}】或者功能名称【{1}】是非法数据值", appCodeName, funcCodeNames));
			bool result = false;
			//if (roleCodeNameDT.Rows.Count > 0)
			{
				string roleCodeNames = GetColumnValue(roleCodeNameDT, "CODE_NAME");

				result = IsUserInRoles(userID, userAllPath, appCodeName, roleCodeNames, delegationMask);
			}
			return result;
		}
		//查询指定部门下,指定应用中,指定角色,指定类别的所有人员(不分职位)
		private static DataSet InnerGetRolesUsers(string orgRoot, string appCodeName, string roleCodeNames, DelegationMaskType delegationMask, string extAttr)
		{
			return InnerGetRolesUsers(orgRoot, appCodeName, roleCodeNames, delegationMask, SidelineMaskType.All, extAttr);
		}
        public DataSet GetUserPermissions(string userValue, string appCodeName, UserValueType userValueType, RightMaskType rightMask, DelegationMaskType delegationMask)
        {
            string[] schemaTypes = SchemaInfo.FilterByCategory("Roles").ToSchemaNames();
            string[] userIDs     = OGUReaderService.SplitObjectValues(userValue);

            SCObjectAndRelationCollection users = OGUReaderService.GetSearchAdapter(GetSearchOUIDType(userValueType), SchemaInfo.FilterByCategory("Users").ToSchemaNames(), userIDs, false).QueryObjectsAndRelations();

            SchemaObjectCollection roles = SCSnapshotAdapter.Instance.QueryUserBelongToPermissions(schemaTypes, appCodeName, users.ToIDArray(), false, DateTime.MinValue);

            DataSet ds = new DataSet();

            ds.Tables.Add(QueryHelper.GetAppObjectTableBuilder(schemaTypes).Convert(roles));

            return(ds);
        }
		/// <summary>
		/// 查询指定人员,在指定应用,指定角色中所拥有的服务范围
		/// </summary>
		/// <param name="userID"></param>
		/// <param name="userAllPath"></param>
		/// <param name="appCodeName"></param>
		/// <param name="funcCodeNames"></param>
		/// <param name="delegationMask"></param>
		/// <param name="scopeMask"></param>
		/// <returns></returns>
		private static DataSet GetUserFunctionsScopes(string userID,
			string userAllPath,
			string appCodeName,
			string funcCodeNames,
			DelegationMaskType delegationMask,
			ScopeMaskType scopeMask)
		{
			string strSql = GetUserFunctionsScopes_SqlStr(userID, userAllPath, appCodeName, funcCodeNames, delegationMask, scopeMask);
			if (strSql == string.Empty)
			{
				strSql = @"
SELECT ID, APP_ID, NAME, CODE_NAME, EXPRESSION, DESCRIPTION, CLASSIFY, SORT_ID, INHERITED  
FROM SCOPES 
WHERE 1>1";
				return OGUCommonDefine.ExecuteDataset(strSql);
			}
			else
			{
				strSql += "\n ORDER BY CLASSIFY, SORT_ID";
				return GetScopeAllPath(OGUCommonDefine.ExecuteDataset(strSql), userID, userAllPath);
			}
		}
		//查询指定人员,在指定应用中,是否拥有指定的功能权限(全部才可)
		private static bool DoesUserHasAllPermissions(string userID,
			string userAllPath,
			string appCodeName,
			string funcCodeNames,
			DelegationMaskType delegationMask)
		{
			string[] arrFuncCodeName = funcCodeNames.Split(new char[] { ',', ';' });

			for (int i = 0; i < arrFuncCodeName.Length; i++)
			{
				if (false == DoesUserHasPermissions(userID, userAllPath, appCodeName, arrFuncCodeName[i], delegationMask))
					return false;
			}
			return true;
		}
 public System.Data.DataSet GetRolesUsers2(string orgRoot, string appCodeName, string roleCodeNames, DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr, bool includeMatrixUsers)
 {
     object[] results = this.Invoke("GetRolesUsers2", new object[] {
         orgRoot,
         appCodeName,
         roleCodeNames,
         delegationMask,
         sidelineMask,
         extAttr,
         includeMatrixUsers
     });
     return((System.Data.DataSet)(results[0]));
 }
		//生成语句:查询指定人员,在指定应用,指定角色中所拥有的服务范围
		private static string GetUserFunctionsScopes_SqlStr(string userID,
			string userAllPath,
			string appCodeName,
			string funcCodeNames,
			DelegationMaskType delegationMask,
			ScopeMaskType scopeMask)
		{
			//从功能到角色
			DataTable roleDT = GetFunctionsRoles(appCodeName, funcCodeNames).Tables[0];

			string roleCodeNames = GetColumnValue(roleDT, "CODE_NAME");

			return GetUserRolesScopes_SqlStr(userID, userAllPath, appCodeName, roleCodeNames, delegationMask, scopeMask);
		}
Exemple #43
0
        public DataSet GetUserRoles2(string userValue, string appCodeName, UserValueType userValueType, RightMaskType rightMask, DelegationMaskType delegationMask, bool includeMatrixUsers)
        {
            string[] schemaTypes = SchemaInfo.FilterByCategory("Roles").ToSchemaNames();
            string[] userIDs     = OGUReaderService.SplitObjectValues(userValue);

            SCObjectAndRelationCollection users = OGUReaderService.GetSearchAdapter(GetSearchOUIDType(userValueType), SchemaInfo.FilterByCategory("Users").ToSchemaNames(), userIDs, false).QueryObjectsAndRelations();

            SchemaObjectCollection roles = SCSnapshotAdapter.Instance.QueryUserBelongToRoles(schemaTypes, appCodeName, users.ToIDArray(), false, DateTime.MinValue);

            if (includeMatrixUsers)
            {
                List <string> matachedRoleIDs = GetUserRoleIDsInMatrix(users.ToIDArray(), appCodeName);

                //过滤掉已经在之前查询过的角色
                matachedRoleIDs = matachedRoleIDs.FindAll(rID => roles.ContainsKey(rID) == false);

                if (matachedRoleIDs.Count > 0)
                {
                    InSqlClauseBuilder matrixRoleBuilder = new InSqlClauseBuilder("ID");

                    matrixRoleBuilder.AppendItem(matachedRoleIDs.ToArray());
                    SchemaObjectCollection rolesInMatrix = SchemaObjectAdapter.Instance.Load(matrixRoleBuilder, DateTime.MinValue);

                    rolesInMatrix.ForEach(rMatrix => roles.AddNotExistsItem(rMatrix, (r) => string.Compare(r.ID, rMatrix.ID, true) == 0));
                }
            }

            DataSet ds = new DataSet();

            ds.Tables.Add(QueryHelper.GetAppObjectTableBuilder(schemaTypes).Convert(roles));

            return(ds);
        }
		/// <summary>
		/// 查询指定部门下,指定应用中,拥有指定功能的所有人员
		/// </summary>
		/// <param name="orgRoot">根部门的全路径,空串时不限制部门</param>
		/// <param name="appCodeName">应用的英文标识</param>
		/// <param name="funcCodeNames">功能的英文标识,多个时用逗号分隔[只要有其中一项就可以]</param>
		/// <param name="delegationMask">委派类型</param>
		/// <param name="sidelineMask">职位类型</param>
		/// <param name="extAttr">要求获取的扩展属性</param>
		/// <returns>查询指定部门下,指定应用中,拥有指定功能的所有人员[多个功能号的时候,只要有其中一项就可以]</returns>
		//[Obsolete("不建议使用参数extAttr,使用参数extAttr会调有机构人员接口,影响性能", false)]
		public static DataSet GetFunctionsUsers(string orgRoot,
			string appCodeName,
			string funcCodeNames,
			DelegationMaskType delegationMask,
			SidelineMaskType sidelineMask,
			string extAttr)
		{
			string cacheKey = InnerCacheHelper.BuildCacheKey(orgRoot, appCodeName, funcCodeNames, delegationMask, sidelineMask, extAttr);
			DataSet result;
			//if (false == GetFunctionsUsersQueue.Instance.TryGetValue(cacheKey, out result))
			//{
			//    lock (typeof(GetFunctionsUsersQueue))//.CacheQueueSync)
			//    {
			if (false == GetFunctionsUsersQueue.Instance.TryGetValue(cacheKey, out result))
			{
				result = InnerGetFunctionsUsers(orgRoot, appCodeName, funcCodeNames, delegationMask, sidelineMask, extAttr);
				GetFunctionsUsersQueue.Instance.Add(cacheKey, result, InnerCacheHelper.PrepareDependency());
			}
			//    }
			//}
			return result;
		}
		/// <summary>
		/// 查询指定部门下,指定应用中,拥有指定功能的所有人员
		/// </summary>
		/// <param name="orgRoot">根部门的全路径,空串时不限制部门</param>
		/// <param name="appCodeName">应用的英文标识</param>
		/// <param name="funcCodeNames">功能的英文标识,多个时用逗号分隔</param>
		/// <param name="delegationMask">委派类型</param>
		/// <param name="sidelineMask">职位类型</param>
		/// <returns></returns>
		public static DataSet GetFunctionsUsers(string orgRoot,
			string appCodeName,
			string funcCodeNames,
			DelegationMaskType delegationMask,
			SidelineMaskType sidelineMask)
		{
			return GetFunctionsUsers(orgRoot, appCodeName, funcCodeNames, delegationMask, sidelineMask, string.Empty);
		}
 /// <remarks/>
 public System.IAsyncResult BeginGetFunctionsUsers(string orgRoot, string appCodeName, string funcCodeNames, DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr, System.AsyncCallback callback, object asyncState)
 {
     return(this.BeginInvoke("GetFunctionsUsers", new object[] {
         orgRoot,
         appCodeName,
         funcCodeNames,
         delegationMask,
         sidelineMask,
         extAttr
     }, callback, asyncState));
 }
        public DataSet GetRolesUsers(string orgRoot, string appCodeName, string roleCodeNames, DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr)
        {
            string[] schemaTypes = SchemaInfo.FilterByCategory("Roles").ToSchemaNames();
            string[] roleIDs     = OGUReaderService.SplitObjectValues(roleCodeNames);

            bool removeDuplicateData = GetMethodSettingAttributeValue("GetChildrenInRoles", "removeDuplicateData", false);

            SCObjectAndRelationCollection relations = SCSnapshotAdapter.Instance.QueryRolesContainsUsers(schemaTypes, appCodeName, roleIDs, removeDuplicateData, false, DateTime.MinValue);

            relations.FillDetails();

            DataSet ds = new DataSet();

            ds.Tables.Add(QueryHelper.GetOguTableBuilder(SchemaInfo.FilterByCategory("Users").ToSchemaNames()).Convert(relations));

            return(ds);
        }
 /// <remarks/>
 public System.IAsyncResult BeginIsUserInAllRoles(string userValue, string appCodeName, string roleCodeNames, UserValueType userValueType, DelegationMaskType delegationMask, System.AsyncCallback callback, object asyncState)
 {
     return(this.BeginInvoke("IsUserInAllRoles", new object[] {
         userValue,
         appCodeName,
         roleCodeNames,
         userValueType,
         delegationMask
     }, callback, asyncState));
 }
 public System.Data.DataSet GetFunctionsUsers(string orgRoot, string appCodeName, string funcCodeNames, DelegationMaskType delegationMask, SidelineMaskType sidelineMask, string extAttr)
 {
     object[] results = this.Invoke("GetFunctionsUsers", new object[] {
         orgRoot,
         appCodeName,
         funcCodeNames,
         delegationMask,
         sidelineMask,
         extAttr
     });
     return((System.Data.DataSet)(results[0]));
 }
 /// <remarks/>
 public System.IAsyncResult BeginDoesUserHasAllPermissions(string userValue, string appCodeName, string funcCodeNames, UserValueType userValueType, DelegationMaskType delegationMask, System.AsyncCallback callback, object asyncState)
 {
     return(this.BeginInvoke("DoesUserHasAllPermissions", new object[] {
         userValue,
         appCodeName,
         funcCodeNames,
         userValueType,
         delegationMask
     }, callback, asyncState));
 }
 public bool DoesUserHasAllPermissions(string userValue, string appCodeName, string funcCodeNames, UserValueType userValueType, DelegationMaskType delegationMask)
 {
     object[] results = this.Invoke("DoesUserHasAllPermissions", new object[] {
         userValue,
         appCodeName,
         funcCodeNames,
         userValueType,
         delegationMask
     });
     return((bool)(results[0]));
 }
 /// <remarks/>
 public System.IAsyncResult BeginGetUserApplications(string userValue, UserValueType userValueType, RightMaskType rightMask, DelegationMaskType delegationMask, System.AsyncCallback callback, object asyncState)
 {
     return(this.BeginInvoke("GetUserApplications", new object[] {
         userValue,
         userValueType,
         rightMask,
         delegationMask
     }, callback, asyncState));
 }
 public System.Data.DataSet GetUserFunctionsScopes(string userValue, string appCodeName, string funcCodeNames, UserValueType userValueType, DelegationMaskType delegationMask, ScopeMaskType scopeMask)
 {
     object[] results = this.Invoke("GetUserFunctionsScopes", new object[] {
         userValue,
         appCodeName,
         funcCodeNames,
         userValueType,
         delegationMask,
         scopeMask
     });
     return((System.Data.DataSet)(results[0]));
 }
		/// <summary>
		/// 查询指定人员,在指定应用,指定角色中所拥有的服务范围
		/// </summary>
		/// <param name="userValue">用户身份标识(由userValueType参数指定类型)</param>
		/// <param name="appCodeName">应用的英文标识</param>
		/// <param name="funcCodeNames">功能的英文标识,多个时用逗号分隔</param>
		/// <param name="userValueType">用户身份标识类型(UserValueType.LogonName:登录名, UserValueType.AllPath:全路径)</param>
		/// <param name="delegationMask">委派类型</param>
		/// <param name="scopeMask">服务范围类型</param>
		/// <returns></returns>
		public static DataSet GetUserFunctionsScopes(string userValue,
			string appCodeName,
			string funcCodeNames,
			UserValueType userValueType,
			DelegationMaskType delegationMask,
			ScopeMaskType scopeMask)
		{
			string cacheKey = InnerCacheHelper.BuildCacheKey(userValue, appCodeName, funcCodeNames, userValueType, delegationMask, scopeMask);
			DataSet result;
			//if (false == GetUserFunctionsScopesQueue.Instance.TryGetValue(cacheKey, out result))
			//{
			//    lock (typeof(GetUserFunctionsScopesQueue))//.CacheQueueSync)
			//    {
			if (false == GetUserFunctionsScopesQueue.Instance.TryGetValue(cacheKey, out result))
			{
				using (DbContext context = DbContext.GetContext(CommonResource.AppConnAlias))
				{
					string strUserIDs = string.Empty;
					strUserIDs = GetUserGuids(userValue, userValueType);
					if (userValueType == UserValueType.AllPath)
					{
						result = GetUserFunctionsScopes(strUserIDs, userValue, appCodeName, funcCodeNames, delegationMask, scopeMask);
					}
					else
					{
						result = GetUserFunctionsScopes(strUserIDs, string.Empty, appCodeName, funcCodeNames, delegationMask, scopeMask);
					}
				}
				GetUserFunctionsScopesQueue.Instance.Add(cacheKey, result, InnerCacheHelper.PrepareDependency());
			}
			//    }
			//}
			return result;
		}