-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Fix readonly UI for create document user permission #19554
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
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR refactors how create/update permissions are enforced by removing individual flags, introducing unified handlers, and reacting to the document's isNew
state.
- Replaced
#userCanCreate
/#userCanUpdate
flags with#enforceUserPermission
method - Added
#handleUserPermissionChange
to centralize read-only guard logic - Observes
isNew
to decide whether to apply create or update permission rules
Comments suppressed due to low confidence (1)
src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts:192
- Add a JSDoc comment for
#enforceUserPermission
(and similarly for#handleUserPermissionChange
) to explain its purpose, parameters, and side-effects on the read-only guard.
#enforceUserPermission(verb: string, message: string) {
...braco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts
Outdated
Show resolved
Hide resolved
...braco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts
Outdated
Show resolved
Hide resolved
…kspace/document-workspace.context.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…//github.com/umbraco/Umbraco-CMS into v16/bugfix/create-update-permission-readonly
@@ -434,6 +415,9 @@ export class UmbDocumentWorkspaceContext | |||
this.readOnlyGuard?.addRule({ | |||
unique: identifier, | |||
message, | |||
/* This guard is a bit backwards. The rule is permitted to be read-only. | |||
If the user does not have permission, we set it to true = permitted to be read-only. */ | |||
permitted: true, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From an outsider trying to use the readOnly guard, I only stumbled across this PR and realised I had to set permitted to true as opposed to false like the propertyWriteGuard
Would it best if this could be aligned like the others, just to avoid confusion.
And another comment is that the docs page mentions not to use readonlyGuard. Is this the case or can us package devs use it ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We already relied on it in core, and to keep this fix as simple as possible, I just corrected the code. We want to move away from it in core as well, and the current plan is for it to be deprecated and removed eventually. If you can solve your case with the view/write guards, I recommend using them. If you can't, please let us know.
As mentioned in the comment, the DX is a bit backward compared to the view/write guards. We want guards to grant access to something instead of removing it.
Fixes: #19286
Please ensure that the following user permission combinations work as expected: