Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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();
     }
 }
Exemplo n.º 3
0
    /// <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);
    }
Exemplo n.º 4
0
        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());
        }