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

Show a UI warning when user does not have permission to update/edit an existing Navigation block #37286

Merged

Conversation

getdave
Copy link
Contributor

@getdave getdave commented Dec 10, 2021

Description

Explores part of #36286 (comment) to display a warning to the user if they have insufficient permissions to edit/update the given Navigation block.

This also disallows renaming or deleting the Navigation via the Inspector controls sidebar.

Note this does not cover the creation of brand new Navigations, but rather the scenario whereby another user has created the Navigation and a lower permission user is attempting to edit it.

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

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

How has this been tested?

  • Install a Plugin such as User Switching to afford easy switching between Users.
  • Create a Admin and Contributor level user.
  • As the Contributor, create a Post.
  • As the Admin go to that post and add a Navigation block and add some items and save.
  • As the Contributor, go back to the Post. You should see a notice warning that you have insufficient permission to edit.
  • As the Admin go to that post and check you can still edit the Navigation as before. You should see no notices.

Also check you cannot delete or rename the Navigation using the Inspector controls under "Advanced".

Note you are not stopped from attempting to update. It might be possible to somewhat disable the component but that will be handled in a follow up.

Screenshots

Screen Shot 2021-12-14 at 15 18 47

Types of changes

Bug fix (non-breaking change which fixes an issue)

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).

@getdave getdave self-assigned this Dec 10, 2021
@getdave getdave added the [Block] Navigation Affects the Navigation Block label Dec 10, 2021
@getdave getdave marked this pull request as ready for review December 10, 2021 15:20
@getdave getdave changed the title Show a UI warning when user does not have permission to update/edit a Navigation block Show a UI warning when user does not have permission to update/edit an existing Navigation block Dec 10, 2021
@github-actions
Copy link

github-actions bot commented Dec 10, 2021

Size Change: +2.3 kB (0%)

Total Size: 1.13 MB

Filename Size Change
build/block-editor/index.min.js 140 kB +422 B (0%)
build/block-editor/style-rtl.css 14.6 kB +164 B (+1%)
build/block-editor/style.css 14.6 kB +166 B (+1%)
build/block-library/blocks/columns/style-rtl.css 502 B -1 B (0%)
build/block-library/blocks/columns/style.css 501 B -1 B (0%)
build/block-library/common-rtl.css 910 B +53 B (+6%) 🔍
build/block-library/common.css 908 B +52 B (+6%) 🔍
build/block-library/editor-rtl.css 10.1 kB +53 B (+1%)
build/block-library/editor.css 10.1 kB +54 B (+1%)
build/block-library/index.min.js 163 kB +590 B (0%)
build/block-library/style-rtl.css 10.8 kB +54 B (+1%)
build/block-library/style.css 10.8 kB +55 B (+1%)
build/block-library/theme-rtl.css 675 B +3 B (0%)
build/block-library/theme.css 679 B +2 B (0%)
build/components/index.min.js 214 kB -263 B (0%)
build/compose/index.min.js 11.2 kB +247 B (+2%)
build/date/index.min.js 31.9 kB +408 B (+1%)
build/edit-site/index.min.js 35.5 kB +70 B (0%)
build/edit-site/style-rtl.css 6.63 kB +60 B (+1%)
build/edit-site/style.css 6.63 kB +63 B (+1%)
build/editor/index.min.js 37.9 kB +98 B (0%)
build/react-refresh-entry/index.min.js 8.44 kB -52 B (-1%)
ℹ️ 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-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/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/editor-rtl.css 1.91 kB
build/block-library/blocks/navigation/editor.css 1.91 kB
build/block-library/blocks/navigation/style-rtl.css 1.71 kB
build/block-library/blocks/navigation/style.css 1.7 kB
build/block-library/blocks/navigation/view.min.js 2.79 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 772 B
build/block-library/blocks/site-logo/editor.css 772 B
build/block-library/blocks/site-logo/style-rtl.css 165 B
build/block-library/blocks/site-logo/style.css 165 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/reset-rtl.css 474 B
build/block-library/reset.css 474 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/style-rtl.css 15.5 kB
build/components/style.css 15.5 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/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.1 kB
build/edit-post/style.css 7.09 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/style-rtl.css 3.78 kB
build/editor/style.css 3.77 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-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

@adamziel
Copy link
Contributor

adamziel commented Dec 13, 2021

I like this PR, it preserves everything in the post while limiting just the single restricted functionality. It looks like something that other entity-based blocks could use, too. Perhaps the logic here would make a good <PermissionsRequired /> component? Multi-entity saving could also leverage the permissions data. What if we declared permissions in the entities config? 🤔 Then each <EntityProvider could also render a UI warning. cc @gziolo @youknowriad

@draganescu
Copy link
Contributor

IMO we should make the blocks that cannot be edited read only and show the permission message in the inspector or in a flash notification when editing is attempted, so that we don't clutter the layouts so much :)

Particularly if we'll add this to other entity based blocks.

@getdave
Copy link
Contributor Author

getdave commented Dec 13, 2021

Glad you folks believe this is a better route forward.

If we can agree to merge this PR, then I can iterate on disabling the UI iterations.

In terms of time and scope, can we try and land a solution for the Navigation block only? If that can be abstracted for other blocks then great, but with limited time left I believe we need to focus on the Nav block only.

@getdave
Copy link
Contributor Author

getdave commented Dec 13, 2021

@jasmussen @javierarce Pinging you both here to see if you have any opinions on how to show the UI warning to the user.

@getdave
Copy link
Contributor Author

getdave commented Dec 13, 2021

IMO we should make the blocks that cannot be edited read only and show the permission message in the inspector or in a flash notification when editing is attempted, so that we don't clutter the layouts so much :)

I updated the implementation to use the global @wordpress/ notices package.

@spacedmonkey
Copy link
Member

@getdave This does not handle the case where a user edits a post that contains a navigation post that they can not access.

Screen.Recording.2021-12-13.at.16.13.35.mov

In this screencast, you can see an admin add a navigation post then a contributor try and edit that post. The REST API 404s but that is not error handling in the editor.

@getdave
Copy link
Contributor Author

getdave commented Dec 13, 2021

@getdave This does not handle the case where a user edits a post that contains a navigation post that they can not access.

@spacedmonkey I don't understand this. I tested it and I couldn't replicate. Did I miss a step?

Screen.Capture.on.2021-12-13.at.16-59-13.mp4
  • I created a Post as Contributor.
  • I switched to Admin and edited the Post, adding a Nav block and saving it.
  • I switch back to Contributor.
  • I saw the Nav block load correctly but the UI message was displayed.

@spacedmonkey
Copy link
Member

@getdave The difference seems to be that you created a new menu, I used an existing menu that was created as part of FSE.

I ran my test again, got different buggy results.
Spinner that never goes
Screenshot 2021-12-13 at 19 43 27

But when I select the block, I do get an error message.
Screenshot 2021-12-13 at 19 43 30

@getdave
Copy link
Contributor Author

getdave commented Dec 14, 2021

@spacedmonkey Those replication steps didn't work either. I tried:

  • As admin, creating Navigation in Site Editor
  • switching to a Post which has contributor as author
  • adding Nav block and selecting the Nav Menu i created in Site Editor and savings.
  • switching to Contributor user
  • opening the same Post
  • Menu loads as expected and the error shows when the block is selected (intentional)
Screen.Capture.on.2021-12-14.at.09-14-40.mp4

Not sure why you're getting different results here. Could you try rebuilding and then running the test again and noting down the exact steps to replicate what you're experiencing?

One thing I noted was that (for some reason) then Menu you are selecting has no items. Was that intentional?

@getdave getdave added the [Type] Bug An existing feature does not function as intended label Dec 14, 2021
@getdave getdave mentioned this pull request Dec 14, 2021
38 tasks
@spacedmonkey
Copy link
Member

Steps to replicate.

  1. Create a post with navigation as admin.
  2. Login as contributor.
  3. Create post
  4. Try to embed navigation for admin post.
  5. See spinner.

@spacedmonkey
Copy link
Member

@getdave

Screen.Recording.2021-12-14.at.11.31.36.mov

@talldan
Copy link
Contributor

talldan commented Dec 15, 2021

I think it should be possible to make the blocks mostly non-editable. Possibly it just requires setting templateLock to all. If that doesn't achieve everything needed it could also be possible to conditionally use the Disabled component and set renderAppender to false.

I think it could be worth trying it out in a separate PR as a small follow-up.

@talldan
Copy link
Contributor

talldan commented Dec 15, 2021

I think the flaky test system had an issue with the forward slash in the test description, so I've changed the test description. Hopefully that makes it pass.

@getdave
Copy link
Contributor Author

getdave commented Dec 15, 2021

I think it could be worth trying it out in a separate PR as a small follow-up.

Yes let's tackle this separately.

@getdave
Copy link
Contributor Author

getdave commented Dec 15, 2021

However, it the snackbar message show everytime the block is selected.

Thanks @spacedmonkey. That's actually intended based on @jasmussen's comment

@jasmussen: The snackbar warning announces well to screen readers, and by virtue of appearing in context, every time you try to make an edit, feels like the better interface for this warning.

Comment on lines +822 to +825
// Expect a console 403 for request to Navigation Areas for lower permisison users.
// This is because reading requires the `edit_theme_options` capability
// which the Contributor level user does not have.
// See: https://github.com/WordPress/gutenberg/blob/4cedaf0c4abb0aeac4bfd4289d63e9889efe9733/lib/class-wp-rest-block-navigation-areas-controller.php#L81-L91.
Copy link
Contributor

Choose a reason for hiding this comment

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

Seems similar to #33003?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

AFAIK it's entirely expected. In this case the contributor user should not have permission and thus 403 is expected. Running the same test as Admin would see no 403 as they have the requisite capability.

@getdave getdave added the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Dec 15, 2021
@getdave getdave requested a review from talldan December 15, 2021 13:37
@getdave
Copy link
Contributor Author

getdave commented Dec 15, 2021

@talldan I've adjusted as required and @ockham and I fixed the flaky test issue (turns out you need the create user bit in before/afterAll hooks.

Are you happy to merge?

@adamziel
Copy link
Contributor

I cannot test due to a npm outage, but the code looks good to me.

Copy link
Contributor

@talldan talldan left a comment

Choose a reason for hiding this comment

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

LGTM, thanks for making those late changes.

@talldan talldan merged commit 131df0e into trunk Dec 16, 2021
@talldan talldan deleted the try/nav-block-show-permission-notice-when-unable-to-save branch December 16, 2021 08:45
@github-actions github-actions bot added this to the Gutenberg 12.3 milestone Dec 16, 2021
@getdave
Copy link
Contributor Author

getdave commented Dec 16, 2021

Thanks to everyone who helped with this, particularly @spacedmonkey for his REST API knowledge and @talldan and @adamziel for reviewing 🙇‍♂️

@getdave
Copy link
Contributor Author

getdave commented Dec 17, 2021

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

Having spoken with release leads, as requested I have raised this Trac ticket to track the need to update strings after the Beta 3.

@tellthemachines tellthemachines removed the Backport to WP 6.7 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
…n existing Navigation block (#37286)

* Show warning when user has insufficient permision to edit the given Nav

* Move warning underneath block but allow viewing

* Sync warning display with entity loading

* Include ref as effect dependency

* Revert unintentional edit to comment placement

* Show permisisons warning using global notices system

* Hide delete and rename inspector items based on perms

* Switch to snackbar notice

* Add e2e test covering update permission notice

* Try removing forward slash to see if test passes

* Remove usage of uniqueId

Resolves https://github.com/WordPress/gutenberg/pull/37286\#discussion_r769211397

* Update error message to use clearer terminology

Addressses https://github.com/WordPress/gutenberg/pull/37286\#discussion_r769214084

* Fix test to match code error message string change

* Move permissions selectors to existing hook

* Add explaination of requirement for 403 expect for Nav Areas

* Attempt to fix flaky test on CI

* Remove ref as a dependency to useSelect

Co-authored-by: Daniel Richards <[email protected]>
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
None yet
Development

Successfully merging this pull request may close these issues.

8 participants