示例#1
0
        public Permission GetPermission(string userID, int roleID)
        {
            Permission      p       = new Permission();
            PermissionConst p_const = new PermissionConst();
            DataTable       dt      = GetPermissionAsTable(userID, roleID);

            if (dt != null && dt.Rows.Count > 0)
            {
                int permission_ID = -1;
                //lấy các field const của permisison
                FieldInfo[] fi = p_const.GetType().GetFields();
                foreach (DataRow dr in dt.Rows)
                {
                    permission_ID = Convert.ToInt32(dr[0]);
                    //duyệt qua các field const
                    foreach (FieldInfo info in fi)
                    {
                        //kiểm tra nếu field nào có giá trị bằng giá trị get ra được từ DB thì set biến cho đối tượng permission
                        if (Convert.ToInt32(info.GetValue(p_const)) == permission_ID)
                        {
                            //get ra field của đối tượng permission sau đó gán bằng true
                            p.GetType().GetField("is" + info.Name).SetValue(p, true);
                            break;
                        }
                    }
                }
            }
            return(p);
        }
示例#2
0
        /// <summary>
        /// Get các quyền của user không phụ thuộc vào channel và chuyên mục
        /// </summary>
        /// <param name="userID">User ID</param>
        /// <returns></returns>
        public Permission GetPermission(string userID)
        {
            Permission      p            = new Permission();
            PermissionConst p_const      = new PermissionConst();
            string          strCacheName = "GetPermission1_" + userID;
            DataTable       dt           = GetFromCache(strCacheName);

            if (dt == null)
            {
                if (userID.ToLower().Trim() == "admin")
                {
                    using (MainDB db = new MainDB()) {
                        dt = db.StoreProcedure.vc_Execute_Sql("select Permission_ID from permission");
                    }
                    SetDataToCache(dt, strCacheName, "Permission");
                }
                else
                {
                    //string sql = "select Distinct Permission_ID from VIEW_PermissionWithoutCategory where User_ID='" + userID + "'";
                    using (MainDB db = new MainDB()) {
                        dt = db.StoreProcedure.GetPermission(userID.ToString());
                    }
                    string[] strTableCache = { "Channel", "Channel_User", "Channel_User_Role", "Permission", "Role", "User", "User_Permission" };
                    SetCache(dt, strCacheName, strTableCache);
                }
            }

            if (dt != null && dt.Rows.Count > 0)
            {
                int permission_ID = -1;
                //lấy các field const của permisison
                FieldInfo[] fi = p_const.GetType().GetFields();
                foreach (DataRow dr in dt.Rows)
                {
                    permission_ID = Convert.ToInt32(dr[0]);
                    //duyệt qua các field const
                    foreach (FieldInfo info in fi)
                    {
                        //kiểm tra nếu field nào có giá trị bằng giá trị get ra được từ DB thì set biến cho đối tượng permission
                        if (Convert.ToInt32(info.GetValue(p_const)) == permission_ID)
                        {
                            //get ra field của đối tượng permission sau đó gán bằng true
                            p.GetType().GetField("is" + info.Name).SetValue(p, true);
                            break;
                        }
                    }
                }
            }
            return(p);
        }