Beispiel #1
0
        public List <string> GetObjectsByPermission(string accountID, string permission)
        {
            List <string> channels = new List <string>();
            object        tmpObj   = HttpContext.Current.Session[accountID + "MyPermissionChannelList" + permission];

            if (tmpObj != null)
            {
                channels = (List <string>)tmpObj;
            }
            else
            {
                IAccountHelper ah          = AccountFactory.CreateInstance();
                List <string>  allowOwners = ah.GetRolesOfAccount(accountID);
                allowOwners.Add(accountID);
                channels = GetObjectID(allowOwners, permission);
                HttpContext.Current.Session[accountID + "MyPermissionChannelList" + permission] = channels;
            }
            return(channels);
        }
        /// <summary>
        /// 获取用户所具有的所有权限内容列表(包含了所属角色的权限列表)
        /// </summary>
        /// <param name="accountID">用户ID</param>
        /// <param name="objectID">菜单ID或栏目ID</param>
        /// <returns>权限列表</returns>
        public List <string> GetPermissionContents(string accountID, string objectID)
        {
            List <string> contents = new List <string>();
            string        key      = "$AccountAllPermissionContents" + accountID + objectID;

            if (HttpContext.Current.Items[key] == null)
            {
                Criteria c    = new Criteria(CriteriaType.Equals, "ObjectID", objectID);
                Criteria subc = new Criteria(CriteriaType.None);
                subc.Mode = CriteriaMode.Or;
                subc.Add(CriteriaType.Equals, "OwnerID", accountID);

                //获取用户所拥有的角色,如果拥有则继续获取每个角色的权限
                IAccountHelper ah    = AccountFactory.CreateInstance();
                List <string>  roles = ah.GetRolesOfAccount(accountID);
                if (roles != null)
                {
                    foreach (string ar in roles)
                    {
                        subc.Add(CriteriaType.Equals, "OwnerID", ar);
                    }
                    c.Criterias.Add(subc);
                }

                List <Permission> plist = Assistant.List <Permission>(c, null);
                if (plist != null)
                {
                    foreach (Permission p in plist)
                    {
                        contents.Add(p.Content);
                    }
                }

                HttpContext.Current.Items[key] = contents;
            }
            else
            {
                contents = HttpContext.Current.Items[key] as List <string>;
            }

            return(contents);
        }