using System; using System.Collections; using System.Collections.Generic; using System.Xml; using System.Configuration; using System.Collections.Specialized; using NOVA.DevFx.Core; namespace HTB.DevFx.Security { /// /// 读取Web.Config中Permission配置内容 /// public class PermissionConfigLoad : IConfigurationSectionHandler { /// /// 实现IConfigurationSectionHandler接口Create方法 /// /// /// /// /// public object Create(Object parent, Object configContext, System.Xml.XmlNode section) { Permission P_Mission = new Permission(); XmlNode AppNode = section.SelectSingleNode("ApplicationID"); P_Mission.module_id = Convert.ToInt32(AppNode.InnerText); P_Mission.module_name = AppNode.Attributes["name"].Value; AppNode = section.SelectSingleNode("PageCode"); //P_Mission.PageCode = AppNode.InnerText; //P_Mission.PageCodeName = AppNode.Attributes["name"].Value; List Files = Common.GetDirFileList("aspx"); XmlNodeList ItemNodes = section.SelectNodes("Item"); foreach (XmlNode Node in ItemNodes) { PermissionItem Item = new PermissionItem(); Item.Item_Name = Node.Attributes["name"].Value; Item.Item_Value = Convert.ToInt32(Node.Attributes["value"].Value); Item.Item_FileList = Node.InnerText.ToLower(); P_Mission.ItemList.Add(Item); if (Item.Item_FileList.Trim() != "") { RemoveFile(Files, Item.Item_FileList.Trim()); } } UpdatePermissionConfig(P_Mission, Files); return P_Mission; } /// /// 移除存在文件 /// /// 所有文件列表 /// 要移除的文件名,多个以,号分开如:,1343.aspx,2342.aspx, private void RemoveFile(List Files, string FileString) { string[] FileStringArray = FileString.Split(','); for (int i = 0; i < FileStringArray.Length; i++) { if (FileStringArray[i].Trim() != "") { Files.Remove(FileStringArray[i].Trim()); } } } /// /// 更新权限配置文件表 /// /// 权限配置 /// 文件名 private void UpdatePermissionConfig(Permission P_Mission, List Files) { if (Files.Count > 0) { PermissionItem Item = new PermissionItem(); Item.Item_Value = 2; Item.Item_Name = "Look"; Item.Item_FileList = ""; foreach (string var in Files) { Item.Item_FileList = string.Format(",{0}{1}", var, Item.Item_FileList); } Item.Item_FileList = Item.Item_FileList + ","; P_Mission.ItemList.Add(Item); } } } }