using System.Collections.Generic; using System.Data; using System.Windows.Forms; using Mesnac.Action.Base; using Mesnac.Basic; using Mesnac.Codd.Session; using Mesnac.Controls.Base; namespace Mesnac.Action.Default.Purview { /// /// 窗体控件的用户权限处理类 /// 创建人:郑立兵 /// 创建时间:2013-7-24 /// 说明:根据登录用户的权限处理窗体内的控件是否可用 /// public class CheckPurviewControl : DatabaseAction, IAction { public void Run(RuntimeParameter runtime) { base.RunIni(runtime);//必须调用 ICSharpCode.Core.LoggingService.Debug("通用方法——窗体中权限控件的处理"); if (runtime.Sender == null || !runtime.Sender.GetType().IsSubclassOf(typeof(Form))) { return;//sender不是功能Form } if (!(runtime.Sender as IPurviewControl).MCPurview) { return;//窗体不验证权限 } if (UserInfo.Instance.RoleGUID == "-mesnac") { return;//超级用户 } DbHelper dbHelper = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); if (dbHelper == null) { return; } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; string strSql = "SELECT TA.GUID, TA.PermissionItemGUID, TA.PermissionType,tb.formname,formtext,tc.functionname FROM BasRolePermission TA INNER JOIN BasFormFunction TC ON TA.PermissionItemGUID=TC.GUID AND TA.PermissionType=TC.FunctionType left join BasForm TB on tc.FormGUID=tb.GUID WHERE TC.DeleteFlag='0' AND TC.DeleteFlag='0' AND TA.RoleGUID=@RoleGUID;"; dbHelper.AddParameter("@RoleGUID", UserInfo.Instance.RoleGUID); dbHelper.CommandText = strSql; DataTable dt = dbHelper.ToDataTable(); string Formname = string.Empty; if (base.GetThisOwer() is Form) { Formname = (base.GetThisOwer() as Form).Name; } List listPC = GetAllMCPurviewControls(); foreach (IPurviewControl control in listPC) { if (control.MCPurview && !control.GetType().IsSubclassOf(typeof(Form))) { control.MCEnabled = false; if (dt.Select(string.Format("formname='{0}' AND functionname='{1}'", Formname, (control as Control).Name)).Length > 0) { control.MCEnabled = true; } } } } } }