public void VertifyRule_CacheHits_ReturnsTrueAndExceptionsIsNull() { var visitorMock = new Mock <DataPrivilegeVisitor <TestDbContext, TestEntity> >(null, null, null); DataPrivilegeVisitor <TestDbContext, TestEntity> dataPrivilegeVisitor = visitorMock.Object; DataPrivilegeContext <TestDbContext, TestEntity, DataPrivilegeRule> context = new DataPrivilegeContext <TestDbContext, TestEntity, DataPrivilegeRule>(new List <DataPrivilegeRule>(), null, null, dataPrivilegeVisitor); DataPrivilegeRule rule = new DataPrivilegeRule() { TableName = "t0", ConditionExpression = "a=b" }; DataPrivilegeInfo <TestEntity> dataPrivilegeInfo = new DataPrivilegeInfo <TestEntity>(t => t.BoolProp, new List <string>()); //反射设置缓存 FieldInfo field = typeof(DataPrivilegeContext <TestDbContext, TestEntity, DataPrivilegeRule>).GetField("_cache", BindingFlags.NonPublic | BindingFlags.Static); var cache = field.GetValue(null) as ConcurrentDictionary <string, DataPrivilegeInfo <TestEntity> >; MethodInfo methodInfo = typeof(DataPrivilegeContext <TestDbContext, TestEntity, DataPrivilegeRule>).GetMethod("GetCacheKey", BindingFlags.NonPublic | BindingFlags.Instance, Type.DefaultBinder, new Type[] { typeof(DataPrivilegeRule) }, null); object key = methodInfo.Invoke(context, new object[] { rule }); cache.TryAdd(key.ToString(), dataPrivilegeInfo); bool result = context.VertifyRule(rule, out IList <Exception> exceptions); result.ShouldBeTrue(); exceptions.ShouldBeNull(); visitorMock.Verify(v => v.Visit(It.IsAny <string>()), Times.Never); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { string carveIds = SysContext.CurrentCarveIDs; MessageHelper manager = new MessageHelper(); if (DataPrivilegeRule.IsAdministrator()) { rptMessage.DataSource = manager.GetAllMessages(); } else { rptMessage.DataSource = manager.GetMessageByPoliceStation(); } rptMessage.DataBind(); } }
/// <summary> /// 用户登录 /// </summary> /// <returns></returns> public static bool UserLogin(string username, string password) { string tempPass = Encrypt.DESEncrypt(password); var loginSuccess = DB.From <CFUser>().Where(CFUser._.LoginName == username && CFUser._.LoginPassword == tempPass).Any(); if (loginSuccess) { var user = DB.From <CFUser>().Where(CFUser._.LoginName == username && CFUser._.LoginPassword == tempPass).ToFirst(); var roles = DB.From <CFUserRole>().Where(CFUserRole._.UserID == user.UserID).ToList(); var roleids = Array.ConvertAll <int, string>(roles.Select(c => c.RoleID).ToArray(), c => c.ToStr()); string regDeptIds = string.Empty; string carveCorpIds = string.Empty; //UserInfoHelper helper = new UserInfoHelper(); DataTable dt = null; SysContext.CurrentUserID = user.UserID; SysContext.CurrentDeptID = user.DeptID; SysContext.CurrentEmployeeID = user.EmployeeID; SysContext.CurrentSupplierID = user.SupplierID; if (user.LastLoginTime.HasValue) { SysContext.CurrentUserLastLoginTime = user.LastLoginTime.Value.ToString(); } if (user.LoginName.HasValue()) { SysContext.CurrentUserName = user.LoginName; } SysContext.CurrentUserTitle = user.Title; SysContext.CurrentRealName = user.RealName; SysContext.CurrentRoleID = string.Join(",", roleids); UserInfoHelper helper = new UserInfoHelper(); if (DataPrivilegeRule.IsAdministrator(user.UserID, roleids)) { dt = helper.GetRegDeptList(); foreach (DataRow row in dt.Rows) { regDeptIds += ",'" + row["PSID"].ToString() + "'"; } dt = helper.GetCummunityList(); foreach (DataRow row in dt.Rows) { carveCorpIds += ",'" + row["LSID"].ToString() + "'"; } } else { dt = helper.GetUserRegRelationList(user.UserID.ToString()); foreach (DataRow row in dt.Rows) { regDeptIds += ",'" + row["t_ad_reg_dept_id"].ToString() + "'"; } dt = helper.GetCummunityListByUser(user.UserID.ToString()); foreach (DataRow row in dt.Rows) { carveCorpIds += ",'" + row["t_ad_reg_dept_id"].ToString() + "'"; } } if (!string.IsNullOrEmpty(regDeptIds)) { regDeptIds = regDeptIds.Substring(1); SysContext.CurrentAreaIDs = regDeptIds; } else { regDeptIds = "'undefined'"; SysContext.CurrentAreaIDs = regDeptIds; } if (!string.IsNullOrEmpty(carveCorpIds)) { carveCorpIds = carveCorpIds.Substring(1); SysContext.CurrentCarveIDs = carveCorpIds; } else { carveCorpIds = "'undefined'"; SysContext.CurrentCarveIDs = carveCorpIds; } LogManager.WriteLog("USER", user.RealName + " 登录系统"); user.Attach(); user.LastLoginTime = DateTime.Now; DB.Update <CFUser>(user); string currentIp = LigerRM.Common.Global.GlobalHelper.GetIPAddress(); DataSet ds = DB.ExecuteDataSet("select * from CF_UserLoginStatus where UserID=" + SysContext.CurrentUserID.ToString()); if (ds.Tables[0].Rows.Count > 0) { DB.ExecuteDataSet("Update CF_UserLoginStatus set LoginTime='" + DateTime.Now.ToString() + "', LoginIP='" + currentIp + "', IsOnline=1 where UserID=" + SysContext.CurrentUserID.ToString()); } else { DB.ExecuteDataSet("insert into CF_UserLoginStatus values (" + SysContext.CurrentUserID.ToString() + ",'" + DateTime.Now.ToString() + "','" + currentIp + "',1) "); } } return(loginSuccess); }
public virtual GridData GetGridData(HttpContext context) { string view = context.Request["view"]; string sortname = context.Request["sortname"]; string sortorder = context.Request["sortorder"]; string _pagenumber = context.Request["page"]; string _pagesize = context.Request["pagesize"]; int? pagenumber = null, pagesize = null; //可分页 if (!_pagenumber.IsNullOrEmpty() && !_pagesize.IsNullOrEmpty()) { pagenumber = _pagenumber.ToInt(); pagesize = _pagesize.ToInt(); if (pagesize == 0) pagesize = 20; } //可排序 if (!sortname.IsNullOrEmpty()) { sortorder = sortorder.IsNullOrEmpty() || sortorder.EqualsTo("asc") ? "asc" : "desc"; } /* * where 为 json参数,格式如下: * { "roles":[ {"field":"ID","value":112,"op":"equal"}, {"field":"Time","value":"2011-3-4","op":"greaterorequal"} ], "op":"and","groups":null * } * FilterTranslator可以为以上格式的where表达式翻译为sql,并生成参数列表(FilterParam[]) */ var dpRule = new DataPrivilegeRule(this.DbContext); var whereTranslator = new FilterTranslator(); string where = context.Request["where"]; if (!where.IsNullOrEmpty()) { //反序列化Filter Group JSON whereTranslator.Group = JSONHelper.FromJson<FilterGroup>(where); //合并数据权限规则 whereTranslator.Group = dpRule.GetRuleGroup(view, whereTranslator.Group); } else { //如果没有定义前台搜索规则 whereTranslator.Group = dpRule.GetRuleGroup(view, whereTranslator.Group); } whereTranslator.Translate(); return GetGridData(view, whereTranslator.CommandText, sortname, sortorder, pagenumber, pagesize, whereTranslator.Parms.ToArray()); }