public static void SetPermissions()
        {
            var pages = Context.GetPermissionOrNull("Pages") ??
                        Context.CreatePermission("Pages", "Pages");

            AncPermission administration = pages.Children.FirstOrDefault(p => p.Name == "Pages.Administration") ??
                                           pages.CreateChildPermission("Pages.Administration", "Administration");

            #region 用户管理

            AncPermission userPermission = administration.CreateChildPermission(PermissionNames.Pages_Users, "用户管理");
            userPermission.CreateChildPermission(PermissionNames.Pages_Users_Query, "查询");
            userPermission.CreateChildPermission(PermissionNames.Pages_Users_Create, "创建");
            userPermission.CreateChildPermission(PermissionNames.Pages_Users_Edit, "修改");
            userPermission.CreateChildPermission(PermissionNames.Pages_Users_Delete, "删除");
            userPermission.CreateChildPermission(PermissionNames.Pages_Users_BatchDelete, "批量删除");

            #endregion 用户管理

            #region 角色管理

            AncPermission rolePermission = administration.CreateChildPermission(PermissionNames.Pages_Roles, "角色管理");
            rolePermission.CreateChildPermission(PermissionNames.Pages_Roles_Query, "查询");
            rolePermission.CreateChildPermission(PermissionNames.Pages_Roles_Create, "创建");
            rolePermission.CreateChildPermission(PermissionNames.Pages_Roles_Edit, "修改");
            rolePermission.CreateChildPermission(PermissionNames.Pages_Roles_Delete, "删除");
            rolePermission.CreateChildPermission(PermissionNames.Pages_Roles_BatchDelete, "批量删除");

            #endregion 角色管理
        }
        public AncPermission CreatePermission(
            string name,
            string displayName = null,
            string description = null)
        {
            if (Permissions.ContainsKey(name))
            {
                throw new UserFriendlyException("There is already a permission with name: " + name);
            }

            var permission = new AncPermission(name, displayName, description);

            Permissions[permission.Name] = permission;
            return(permission);
        }
        private FlatPermissionDto AddPermission(AncPermission permission
                                                , IList <Permission> oldPermissions)
        {
            var flatPermission = _mapper.Map <FlatPermissionDto>(permission);

            if (oldPermissions != null && oldPermissions.Any(op => op.Name == permission.Name))
            {
                flatPermission.IsGranted = true;
            }
            foreach (AncPermission child in permission.Children)
            {
                if (flatPermission.Children == null)
                {
                    flatPermission.Children = new List <FlatPermissionDto>();
                }

                flatPermission.Children.Add(AddPermission(child, oldPermissions));
            }

            return(flatPermission);
        }