Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alternative: restrict Navigation permissions and show UI warning if cannot create #37454

Merged

Conversation

getdave
Copy link
Contributor

@getdave getdave commented Dec 16, 2021

Description

In #37289 we were exploring trying to show a warning if the user cannot "make" new Navigation Menus. However this was proving difficult as whilst even low Role users had permission to create they don't have the permission to publish. This makes it impossible to show an upfront warning to the user if they are likely to not have permission to publish because the publish action is specific to an individual wp_navigation Post which is not created when you insert the Nav block.

This PR proposes another route. We increase the permission gate for the create action on the wp_navigation Post type to edit_theme_options.

This will effectively mean that only Admins can "create" Navigation posts whilst all other users can only "read".

This matches nicely with the current Menus system in WordPress which is also only accessible to Admin users.

There is a precedent in Core for adding custom capabilities to "special" post types. This PR takes the same approach for Navigation posts.

Why not set all permissions to edit_theme_options?

This PR does not use the changes from this Core ticket which seeks to alter the perms on the wp_navigation post to match those of the Menu post type. Why? Because by adjusting the permissions in this way the post types endpoint will not show the wp_navigation post and thus it will not be loaded as an entity in Gutenberg. This will mean the check for the entity will fail in getEntityRecord() before the API request is fired. Therefore we will not be able to "view" the Navigation post.

⚠️ String changes post string freeze in WP 5.9 Beta 3

Having spoken with release leads, as requested I have raised this Trac ticket.

⚠️ Requires Core patch

As this PR modifies navigation.php we will need a corresponding Core patch. The best candidate is probably the one @spacedmonkey already has open in WordPress/wordpress-develop#2056.

Closes #36286

How has this been tested?

First check you cannot create Navigations as a low permission user:

  1. Login as Contributor.
  2. Add new Post and add Nav block.
  3. See warning that you are not allowed to create Navigation Menus.
  4. Check you cannot Create a Navigation via buttons in the placeholder.
  5. Switch to Admin. Repeat above. See that there is no warning.

Now check you can still view existing Navigations:

  1. As a contributor create a Post.
  2. Switch to Admin and edit the same Post.
  3. Add a Nav block and save.
  4. Switch back to Contributor and edit the same post again.
  5. You should be able to view the Navigation (you will see a warning about editing not being possible).
  6. Check that you cannot see the Create Menu option in the Select Menu dropdown.

Screenshots

Screen Shot 2021-12-17 at 09 27 10

Types of changes

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).

@github-actions
Copy link

github-actions bot commented Dec 16, 2021

Size Change: +238 B (0%)

Total Size: 1.13 MB

Filename Size Change
build/block-editor/index.min.js 140 kB -3 B (0%)
build/block-library/blocks/navigation/editor-rtl.css 1.91 kB +1 B (0%)
build/block-library/blocks/navigation/editor.css 1.92 kB +5 B (0%)
build/block-library/blocks/navigation/style-rtl.css 1.69 kB -1 B (0%)
build/block-library/blocks/navigation/style.css 1.68 kB +1 B (0%)
build/block-library/index.min.js 164 kB +226 B (0%)
build/block-library/style-rtl.css 10.8 kB +5 B (0%)
build/block-library/style.css 10.8 kB +4 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 14.6 kB
build/block-editor/style.css 14.6 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 291 B
build/block-library/blocks/buttons/editor.css 291 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 134 B
build/block-library/blocks/code/theme.css 134 B
build/block-library/blocks/columns/editor-rtl.css 210 B
build/block-library/blocks/columns/editor.css 208 B
build/block-library/blocks/columns/style-rtl.css 502 B
build/block-library/blocks/columns/style.css 501 B
build/block-library/blocks/comment-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB
build/block-library/blocks/cover/style.css 1.22 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 966 B
build/block-library/blocks/gallery/editor.css 970 B
build/block-library/blocks/gallery/style-rtl.css 1.63 kB
build/block-library/blocks/gallery/style.css 1.62 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 810 B
build/block-library/blocks/image/editor.css 809 B
build/block-library/blocks/image/style-rtl.css 507 B
build/block-library/blocks/image/style.css 511 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/view.min.js 2.82 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 172 B
build/block-library/blocks/page-list/style.css 172 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 507 B
build/block-library/blocks/post-comments/style.css 507 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 391 B
build/block-library/blocks/post-template/style.css 392 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 389 B
build/block-library/blocks/pullquote/style.css 388 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 273 B
build/block-library/blocks/query-pagination/style.css 269 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 245 B
build/block-library/blocks/separator/style.css 245 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 670 B
build/block-library/blocks/social-links/editor.css 669 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 569 B
build/block-library/blocks/video/editor.css 570 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 910 B
build/block-library/common.css 908 B
build/block-library/editor-rtl.css 10 kB
build/block-library/editor.css 10 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 675 B
build/block-library/theme.css 679 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.3 kB
build/components/index.min.js 214 kB
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.2 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/data/index.min.js 7.49 kB
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29.4 kB
build/edit-post/style-rtl.css 7.13 kB
build/edit-post/style.css 7.13 kB
build/edit-site/index.min.js 35.6 kB
build/edit-site/style-rtl.css 6.61 kB
build/edit-site/style.css 6.6 kB
build/edit-widgets/index.min.js 16.5 kB
build/edit-widgets/style-rtl.css 4.18 kB
build/edit-widgets/style.css 4.18 kB
build/editor/index.min.js 37.9 kB
build/editor/style-rtl.css 3.75 kB
build/editor/style.css 3.74 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.58 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.71 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.72 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 925 B
build/nux/index.min.js 2.08 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.84 kB
build/primitives/index.min.js 924 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11 kB
build/server-side-render/index.min.js 1.57 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@@ -50,6 +50,9 @@ function gutenberg_register_navigation_post_type() {
'editor',
'revisions',
),
'capabilities' => array(
'create_posts' => 'edit_theme_options',
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restrict creation of Nav posts to "admin" role level only. Allows us to display a warning immediately upon insertion of Nav block.

Attempting to modify all the permission (as in WordPress/wordpress-develop#2056) will not work because getEntityRecord will not return the Navigation Post for viewing.

@getdave getdave added [Block] Navigation Affects the Navigation Block [Type] Bug An existing feature does not function as intended labels Dec 16, 2021
@getdave getdave marked this pull request as ready for review December 16, 2021 15:31
lib/navigation.php Outdated Show resolved Hide resolved
@spacedmonkey
Copy link
Member

Screenshot 2021-12-17 at 01 01 37

Even if you can't create / edit navigations, you should be able to select one from dropdown.

@talldan
Copy link
Contributor

talldan commented Dec 17, 2021

This sounds like a good option, and it still leaves the possibility for loosening the restrictions later if the right solution can be found.

Agree with @spacedmonkey that it'd be good to support selecting menus still, but I suppose the dropdown would have to exclude classic menus, as they're converted to a wp_navigation.

Code looks good so far.

@getdave getdave force-pushed the try/alt-nav-block-show-ui-warning-if-cannot-create branch from f0bfb94 to 8013fab Compare December 17, 2021 09:24
@getdave
Copy link
Contributor Author

getdave commented Dec 17, 2021

Even if you can't create / edit navigations, you should be able to select one from dropdown.

Agree with @spacedmonkey that it'd be good to support selecting menus still...

OK I reinstated that feature and created another Notice which appears only when the user is trying to create and there is not existing Nav entity reference.

...but I suppose the dropdown would have to exclude classic menus, as they're converted to a wp_navigation.

Is that because Menus are converted into wp_navigation at point of selection?

@getdave getdave added this to 👀 PRs needing review in Navigation block via automation Dec 17, 2021
@talldan
Copy link
Contributor

talldan commented Dec 17, 2021

OK I reinstated that feature and created another Notice which appears only when the user is trying to create and there is not existing Nav entity reference.

Hopefully we can also hide as many menu creation options as possible.

Is that because Menus are converted into wp_navigation at point of selection?

Yep exactly.

@getdave getdave added the Backport to WP 6.6 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Dec 17, 2021
@getdave
Copy link
Contributor Author

getdave commented Dec 17, 2021

I am working on e2e tests now.

@adamziel
Copy link
Contributor

adamziel commented Dec 17, 2021

It works well, and it is a good start, thank you for working on that @getdave !

There is a bit of a flickering involved:

  1. The navigation block is initially in the loading state
  2. Then it says the menu is deleted
  3. Then it renders, but says one of my blocks is empty
  4. Then it renders that block

See the video below:

editing.notices.mp4

It isn't necessarily a blocker, as this PR solves an important problem, but it would be great to land a fix sooner than later. Maybe the suspense API support will help here once it lands?

There's one other non-blocking rough edge I want to point out: The notice is really easy to miss, and even though it is in place, the sidebar still offers to save the menu. An attempt to save it fails, but

CleanShot 2021-12-17 at 15 26 16
CleanShot 2021-12-17 at 15 26 23

It would be nicer to not display it there in the first place, or make the block immutable (e.g. using a templateLock as @talldan suggested).

Copy link
Contributor

@adamziel adamziel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pointed out some rough edges in this PR, but I don't think any of them is a blocker. The code looks good, the fix works, the problem is important, so I'm approving ✅ I'll defer to @getdave on the best way to apply, postpone, and track the non-blocking issues here.

@getdave

This comment has been minimized.

@getdave

This comment has been minimized.

@getdave
Copy link
Contributor Author

getdave commented Dec 17, 2021

@tellthemachines I believe you will be managing the backporting for Beta 4? If so please can you look to merge this PR as it's important to fix a key permission bug with the Nav block.

Please note that we'll require a companion Trac ticket to alter the wp_navigation post type in Core.

🙇 Thank you in advance.

@tellthemachines tellthemachines merged commit 33ec385 into trunk Dec 20, 2021
Navigation block automation moved this from 👀 PRs needing review to ✅ Done Dec 20, 2021
@tellthemachines tellthemachines deleted the try/alt-nav-block-show-ui-warning-if-cannot-create branch December 20, 2021 04:06
@github-actions github-actions bot added this to the Gutenberg 12.3 milestone Dec 20, 2021
@tellthemachines tellthemachines removed the Backport to WP 6.6 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Dec 21, 2021
tellthemachines pushed a commit that referenced this pull request Dec 21, 2021
…annot create (#37454)

* Test for publish abtility and display warning

* Update creation of Nav posts to require admin perms

* Only show menu creation option if user has permission to create

* Move permission selectors to hook

* Show warning if unable to create Navigation Menus

* Copy changes from Core patch

See https://github.com/WordPress/wordpress-develop/pull/2056/files

* Only show error if create is not allowed

* Revert "Copy changes from Core patch"

This reverts commit 1872f62a454dc41ce787103e3d1830f7ff00d63c.

* Use streamlined permissions

Kudos to @spacedmonkey for #37454

* Remove inline warning and reenable ability to select existing

* Refactor Notices to reusable hook

* Add notices for creating Menus

* Rename dep for clarity

* Hide other creation options

* Add e2e test

* Hide classic Menus from dropdown

See #37454

* Fix up e2e tests following changes from rebase

* Update to make component props more agnostic

* Make component props less tighly coupled to permissions

* Remove unneeded undefined fallback

* Refactor hooks

* Try switch user to admin

* Try switching back to admin after each permissions test

* Try targetting test that relies on avoiding a 404 from URL details endpoint
pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Dec 21, 2021
… type.

Adds `'edit_theme_options'` capabilities top restrict Navigation permission.

Partial backport from Gutenberg WordPress/gutenberg#37454.

Follow-up to [52069], [52145].

Props spacedmonkey, get_dave, hellofromTonya.
See #54487.

git-svn-id: https://develop.svn.wordpress.org/trunk@52400 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Dec 21, 2021
… type.

Adds `'edit_theme_options'` capabilities top restrict Navigation permission.

Partial backport from Gutenberg WordPress/gutenberg#37454.

Follow-up to [52069], [52145].

Props spacedmonkey, get_dave, hellofromTonya.
See #54487.
Built from https://develop.svn.wordpress.org/trunk@52400


git-svn-id: http://core.svn.wordpress.org/trunk@51992 1a063a9b-81f0-0310-95a4-ce76da25c4cd
gMagicScott pushed a commit to gMagicScott/core.wordpress-mirror that referenced this pull request Dec 21, 2021
… type.

Adds `'edit_theme_options'` capabilities top restrict Navigation permission.

Partial backport from Gutenberg WordPress/gutenberg#37454.

Follow-up to [52069], [52145].

Props spacedmonkey, get_dave, hellofromTonya.
See #54487.
Built from https://develop.svn.wordpress.org/trunk@52400


git-svn-id: https://core.svn.wordpress.org/trunk@51992 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Navigation Affects the Navigation Block [Type] Bug An existing feature does not function as intended
Projects
Development

Successfully merging this pull request may close these issues.

As a contributor / author navigation block only shows a spinner
5 participants