public List <Int32> UseDataPermissionFilter() { var pm = PermissionManager.Current; if (pm != null && pm.DataPermissions != null && pm.DataPermissions.Count > 0) { List <Int32> dataPermissionIDs = new List <Int32>(); //遍历组装数据权限ID集合 pm.DataPermissions.ForEach(e => dataPermissionIDs.Add(e.ID)); //根据数据权限ID集合获取角色与数据权限映射 var rdps = RoleDataPermission.FindAllByDataPermissionIDs(dataPermissionIDs); if (rdps != null && rdps.Count > 0) { List <Int32> roleIDs = new List <Int32>(); //遍历组装角色ID集合 rdps.ForEach(e => { if (!roleIDs.Contains(e.RoleID)) { roleIDs.Add(e.RoleID); } }); //根据角色ID集合查找用户与角色映射 var adminRoles = AdminRole.FindAllByRoleIDs(roleIDs); if (adminRoles != null && adminRoles.Count > 0) { List <Int32> adminIDs = new List <Int32>(); adminRoles.ForEach(e => adminIDs.Add(e.AdminID)); return(adminIDs); } } } return(null); }
private void GenerateRegionElement(XmlDocument doc, XmlElement Parent, DataTable childtable) { for (int i = 0; i < childtable.Rows.Count; i++) { int childpkid; string Name; childpkid = (int)childtable.Rows[i]["PKID"]; Name = (string)childtable.Rows[i]["Name"]; System.Xml.XmlElement child = GlobalFacade.XDom.CreateDocumentElement(doc, "TREENODE"); RoleDataPermission HaveRegion = new RoleDataPermission(); HaveRegion.SessionInstance = session; BusinessFilter checkfilter = new BusinessFilter("RoleDataPermission"); checkfilter.AddFilterItem("Type", Convert.ToString((int)DictionaryType.Region), Operation.Equal, FilterType.NumberType, AndOr.AND); checkfilter.AddFilterItem("FK_Role", this.RolePKID.ToString(), Operation.Equal, FilterType.NumberType, AndOr.AND); checkfilter.AddFilterItem("FK_Dictionary", childpkid.ToString(), Operation.Equal, FilterType.NumberType, AndOr.AND); HaveRegion.AddFilter(checkfilter); HaveRegion.Load(); if (HaveRegion.HaveRecord) { GlobalFacade.XDom.SetNodeAttribute(doc, child, "checked", "True"); } GlobalFacade.XDom.SetNodeAttribute(doc, child, "checkBox", "True"); GlobalFacade.XDom.SetNodeAttribute(doc, child, "Expanded", "True"); GlobalFacade.XDom.SetNodeAttribute(doc, child, "Text", Name); GlobalFacade.XDom.SetNodeAttribute(doc, child, "NodeData", childpkid.ToString()); Parent.AppendChild(child); System.Data.DataTable subchildTable; BusinessObjectCollection subchild = new BusinessObjectCollection("Dictionary"); subchild.SessionInstance = session; BusinessFilter filter = new BusinessFilter("Dictionary"); filter.AddFilterItem("Parent", childpkid.ToString(), Operation.Equal, FilterType.NumberType, AndOr.AND); filter.AddFilterItem("Type", Convert.ToString((int)DictionaryType.Region), Operation.Equal, FilterType.NumberType, AndOr.AND); filter.AddFilterItem("IsValid", "1", Operation.Equal, FilterType.NumberType, AndOr.AND); subchild.AddFilter(filter); subchildTable = subchild.GetDataTable(); if (subchildTable.Rows.Count > 0) { GenerateRegionElement(doc, child, subchildTable); } } }
public void SaveRegionConfig(string[] name, int rolepkid) { Session session = new Session(); try { session.BeginTransaction(); BusinessObjectCollection regioncollection = new BusinessObjectCollection("RoleDataPermission"); regioncollection.SessionInstance = session; BusinessFilter filter = new BusinessFilter("RoleDataPermission"); filter.AddFilterItem("FK_Role", rolepkid.ToString(), Operation.Equal, FilterType.NumberType, AndOr.AND); filter.AddFilterItem("Type", Convert.ToString((int)DictionaryType.Region), Operation.Equal, FilterType.NumberType, AndOr.AND); regioncollection.AddFilter(filter); regioncollection.DeleteFilter(); for (int index = 0; index < name.Length; index++) { BusinessMapping.RoleDataPermission regionright = new RoleDataPermission(); regionright.SessionInstance = session; regionright.FK_Role.Value = rolepkid; regionright.Type.Value = 1; regionright.FK_Dictionary.Value = int.Parse(name[index].ToString()); regionright.CreateUser.Value = SystemContext.GetContext().UserID; regionright.ModifyUser.Value = SystemContext.GetContext().UserID; regionright.CreateTime.Value = regionright.ModifyTime.Value = DateTime.Now; regionright.Insert(); } session.Commit(); OperationLog opLog = new OperationLog(); opLog.WriteOperationLog("数据权限管理", "配置数据权限"); } catch { session.Rollback(); } }
public static List<RoleDataPermission> GetAllDataPermissions(string exchangeCode) { List<RoleDataPermission> dataPermissions = new List<RoleDataPermission>(); string sql = "SELECT g.ID,g.Code,g.GroupType FROM dbo.[Group] g WHERE g.GroupType='Account' OR g.GroupType='Instrument'"; DataAccess.GetInstance(exchangeCode).ExecuteReader(sql, CommandType.Text, delegate(SqlDataReader reader) { while (reader.Read()) { RoleDataPermission data = new RoleDataPermission(); data.ExchangeCode = exchangeCode; data.Type = (DataObjectType)Enum.Parse(typeof(DataObjectType), reader["GroupType"].ToString()); data.DataObjectId = (Guid)reader["ID"]; data.Code = reader["Code"].ToString(); dataPermissions.Add(data); } }); return dataPermissions; }
public List<RoleDataPermission> CastGridDataToDataPermission() { List<RoleDataPermission> roleDataPermissions = new List<RoleDataPermission>(); foreach (ExchangeGridData exchange in IExchangeCodes) { if (exchange.IsExchangeAllow == true || exchange.IsExchangeDeny == true) { RoleDataPermission data = new RoleDataPermission(); data.PermissionId = exchange.ExchangeId; data.Code = exchange.ExchangeCode; data.ParentId = 2; data.Level = 1; data.ExchangeCode = exchange.ExchangeCode; data.Type = DataObjectType.Exchange; if (exchange.IsExchangeAllow == true) { data.IsAllow = true; } if (exchange.IsExchangeDeny == true) { data.IsAllow = false; } roleDataPermissions.Add(data); } foreach (DataObjectTypeGridData type in exchange.DataObjectTypes) { if (type.IsDataObjectTypeAllow == true || type.IsDataObjectTypeDeny == true) { RoleDataPermission data = new RoleDataPermission(); data.PermissionId = type.DataObjectTypeId; data.Code = type.DataObjectType; data.Type = (DataObjectType)Enum.Parse(typeof(DataObjectType), type.DataObjectType); data.ParentId = exchange.ExchangeId; data.Level = 2; data.ExchangeCode = exchange.ExchangeCode; if (type.IsDataObjectTypeAllow == true) { data.IsAllow = true; } if (type.IsDataObjectTypeDeny == true) { data.IsAllow = false; } roleDataPermissions.Add(data); } foreach (DataObjectGridData dataObject in type.DataObjects) { if (dataObject.IsAllow == true || dataObject.IsDeny == true) { RoleDataPermission data = new RoleDataPermission(); data.PermissionId = dataObject.Id; data.Code = dataObject.Code; data.DataObjectId = dataObject.DataObjectId; data.ParentId = type.DataObjectTypeId; data.Type = (DataObjectType)Enum.Parse(typeof(DataObjectType), type.DataObjectType); data.Level = 3; data.ExchangeCode = exchange.ExchangeCode; if (dataObject.IsAllow == true) { data.IsAllow = true; } if (dataObject.IsDeny == true) { data.IsAllow = false; } roleDataPermissions.Add(data); } } } } return roleDataPermissions; }
public static List<RoleData> GetRoles(string language) { List<RoleData> roles = new List<RoleData>(); string sql = "[dbo].[GetAllRoleData]"; DataAccess.GetInstance().ExecuteReader(sql, CommandType.StoredProcedure, delegate(SqlDataReader reader) { while (reader.Read()) { RoleData role = new RoleData(); role.RoleId = (int)reader.GetValue(0); role.RoleName = reader.GetValue(1).ToString(); roles.Add(role); } if (reader.NextResult()) { while (reader.Read()) { RoleFunctonPermission functionPermission = new RoleFunctonPermission(); functionPermission.FunctionId = (int)reader["FunctionId"]; functionPermission.Code = reader["Code"].ToString(); if (!(reader["ParentId"] is DBNull)) { functionPermission.ParentId = (int)reader["ParentId"]; } functionPermission.Level = (int)reader["Level"]; functionPermission.Description = reader["Description"].ToString(); functionPermission.IsAllow = (bool)reader["IsAllow"]; int id = (int)reader["RoleId"]; roles.SingleOrDefault(r => r.RoleId == id).FunctionPermissions.Add(functionPermission); } } if (reader.NextResult()) { while (reader.Read()) { RoleDataPermission dataPermission = new RoleDataPermission(); dataPermission.PermissionId = (int)reader["TargetId"]; dataPermission.Code = reader["Code"].ToString(); if (!(reader["ParentId"] is DBNull)) { dataPermission.ParentId = (int)reader["ParentId"]; } if (!(reader["DataObjectId"] is DBNull)) { dataPermission.DataObjectId = (Guid)reader["DataObjectId"]; } dataPermission.IsAllow = (bool)reader["IsAllow"]; dataPermission.ExchangeCode = reader["IExchangeCode"].ToString(); int id = (int)reader["RoleId"]; roles.SingleOrDefault(r => r.RoleId == id).DataPermissions.Add(dataPermission); } } }, new SqlParameter("@language", language)); return roles; }