using System; using System.Collections.Generic; using System.Text; using HTB.DevFx.Core; using System.Configuration; using HTB.DevFx.Utils; using HTB.DevFx.OnlineManagement; namespace HTB.DevFx.Security { /// /// 权限检测类 /// public class PermissionHelper { /// /// 检测权限 /// private bool CheckPermission() { //获取当前访问的页面文件目录下的权限配置文件 Permission Pis = GetModulePermission(); //如果未配置权限集合则直接返回true if (Pis == null) return true; //如果用户已经经过认证 if (Authenticator.IsAuthenticated) { int UserID = Authenticator.UserID; //从缓存中检查当前用户是否为超级用户 //如果是管理员则直接返回true OnlineUser _curUserOnlineInfo = OnlineUserHelper.UserOnlineList.GetValue(UserID); if (_curUserOnlineInfo.U_Super_Flag) return true; //检测页面文件名访问权限 PermissionItem PsItem = GetPermissionItem(Pis.ItemList); if (PsItem == null) return false; if (string.IsNullOrEmpty(WebHelper.GetScriptNameQueryString())) return UserData.CheckPageCode(UserID, Pis.module_id, Pis.PageCode, PsItem.Item_Value); else { if (!UserData.CheckPageCode(UserID, Pis.module_id, Pis.PageCode, PsItem.Item_Value)) { return false; } else { //检测页面文件url权限 PsItem = GetUrlPermissionItem(Pis.ItemList); if (PsItem == null) return true; return UserData.CheckPageCode(UserID, Pis.module_id, Pis.PageCode, PsItem.Item_Value); } } } else { return true; } } /// /// 获取当前目录下权限配置集合 /// public static Permission GetModulePermission() { return (Permission)ConfigurationManager.GetSection("Permission"); } /// /// 获取当前面页所属的PermissionItem /// /// 权限列表 /// public static PermissionItem GetPermissionItem(List List) { PermissionItem PI = null; string curUrlFileName =WebHelper.GetScriptNameWithDot(); foreach (PermissionItem var in List) { if (var.Item_FileList.IndexOf(WebHelper.GetScriptName().ToLower()) >= 0) { return var; } } return PI; } /// /// 获取当前面页Url所属的PermissionItem /// /// 权限 /// 权限值 public static PermissionItem GetUrlPermissionItem(List List) { PermissionItem PI = null; foreach (PermissionItem var in List) { if (var.Item_FileList.IndexOf("," + WebHelper.GetScriptNameUrl().ToLower() + ",") >= 0) { return var; } } return PI; } /// /// 检测按钮权限 /// /// /// public static bool CheckButtonPermission(int PermissionId) { Permission Pis = GetModulePermission(); if (Pis == null) return true; return UserData.CheckPageCode(Authenticator.UserID, Pis.ApplicationID, Pis.PageCode, PermissionId); } /// /// 检测权限,如果无操作权限则直接返回 /// /// public static void CheckPermissionVoid(int PermissionId) { if (!CheckButtonPermission(PermissionId)) { //发送无权限操作提示 } } } }