/// <summary> /// 从配置文件读取配置 /// </summary> /// <param name="sectionNodePath">配置节点的路径</param> /// <returns></returns> public static PermissionDataConfig GetConfig(string sectionNodePath) { if (config != null) { return config; } else { if (string.IsNullOrEmpty(sectionNodePath) == false) { config = (PermissionDataConfig)ConfigurationManager.GetSection(sectionNodePath); } else { config = (PermissionDataConfig)ConfigurationManager.GetSection("permissionData"); } return config; } }
/// <summary> /// 获取config节点,创建配置信息实体 /// </summary> /// <param name="parent"></param> /// <param name="configContext"></param> /// <param name="section"></param> /// <returns></returns> public object Create(object parent, object configContext, System.Xml.XmlNode section) { PermissionDataConfig config = new PermissionDataConfig(); foreach (XmlNode applicationNode in section.ChildNodes) { PermissionDataApplication application = new PermissionDataApplication(); application.Name = applicationNode.Attributes["name"].Value; application.Guid = new Guid(applicationNode.Attributes["guid"].Value); foreach (XmlNode moduleNode in applicationNode.ChildNodes) { PermissionDataModule module = new PermissionDataModule(); module.Name = moduleNode.Attributes["name"].Value; module.Guid = new Guid(moduleNode.Attributes["guid"].Value); foreach (XmlNode subModuleNode in moduleNode.ChildNodes) { PermissionDataSubModule subModule = new PermissionDataSubModule(); subModule.Name = subModuleNode.Attributes["name"].Value; subModule.Guid = new Guid(subModuleNode.Attributes["guid"].Value); subModule.Area = XmlHelper.GetNodeValue(subModuleNode, string.Empty, "area"); subModule.Controller = XmlHelper.GetNodeValue(subModuleNode, string.Empty, "controller"); module.SubModules.Add(subModule.Guid, subModule); config.AllSubModules.Add(subModule.Guid, subModule); } application.Modules.Add(module.Guid, module); } config.Applications.Add(application.Guid, application); } return config; }
/// <summary> /// 获取ACA对应的资源Guid /// </summary> /// <param name="areaName"></param> /// <param name="controllerName"></param> /// <returns></returns> /// <remarks> /// 通过areaName, controllerName获取其对应的子模块配置项是否存在 /// </remarks> private static Guid? GetSettingItemGuid(PermissionDataConfig config, string areaName, string controllerName) { Dictionary<Guid, PermissionDataSubModule> allSubModelDic = config.AllSubModules; foreach (KeyValuePair<Guid, PermissionDataSubModule> subModuleKVP in allSubModelDic) { if (subModuleKVP.Value.Area == areaName && subModuleKVP.Value.Controller == controllerName) { return subModuleKVP.Key; } } return null; }