mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-12 11:19:36 +03:00
Bug: Custom role on restricted book #82
Closed
opened 2026-02-04 16:37:13 +03:00 by OVERLORD
·
12 comments
No Branch/Tag Specified
development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🐛 Bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#82
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @nwalke on GitHub (Mar 29, 2016).
I created a custom role with nothing checked under "Asset Permissions" or "System Permissions" as I want to set this role to only access one book. I then created that book, went to "Restrict", checked "Restrict this book" and checked "View", "Create", "Update" for the role. I clicked save restrictions.
A user assigned that role is able to see the book, sees links to create chapters and pages, but gets an error when clicking either of those links. If I go back to the "Restrict" page for that book, the "Restrict this book" check mark is still there, but my line of checkmarks for my custom role is gone.
Looking in the database I see the correct role ID under restrictions:
The error the user with the custom role ( id 4 shown above) got was "You do not have permission to access the requested page".
I was running this on the master branch.
@ssddanbrown commented on GitHub (Mar 30, 2016):
@nwalke Evening, I've attempted to replicate your setup, Using both MySQL and MariaDB, but I'm having trouble seeing some of the issues you've mentioned.
At the moment, As part of how the permission system has been set up, the role permissions are the master permissions then the entity (Book/Chapter/Page) level permissions are then checked. This means that if a role does not have update permissions at a role level but does have update permissions at a book level they still won't be able to update within that book since the role permissions override. Your issue has made me realise this is wrong. Entity level permission should override and allow access over the role permissions for use cases such as yours. I've been seeing the entity permissions as 'Restrictions' (Preventing Access) rather than 'Permissions' (Allowing and Preventing).
Luckily this is really easy to change (Just one line, app/helpers.php, line 60) but I also want to go through and change the the wording from 'Restrictions' to 'Permissions' in all areas and add some text on the entity permission pages to explain things a little. I'd also want to fully check this to ensure the change won't have any holes. I'll hopefully change this tomorrow and send out a bugfix release.
Right, Sorry for the above ramble, back to the issues I cannot replicate:
Users in that role currently should not be able to see those links at all (Due to the above) so there looks to be something else at play here. Did the user in that role refresh the browser after the permissions were changed?
This is very odd. Your database records are as expected so I'm not sure why this is not being reflected in the UI. By saying 'my line of checkmarks for my custom role is gone' are you saying they are not checked for do you mean the whole role has disappeared?
@nwalke commented on GitHub (Mar 30, 2016):
To answer your last question, the checkmarks are cleared but the role is still there.
I'll wait for the fix tomorrow before trying to get the user to recheck the link display issue.
Thanks for the explanation, and I agree that seems backwards and would MUCH prefer it the other way. Definitely looking forward to that!
@ssddanbrown commented on GitHub (Mar 31, 2016):
Hi @nwalke, I've merged the changes into both the release and master branches now. Let me know if you're still seeing some bugs about.
@nwalke commented on GitHub (Mar 31, 2016):
Permissions seem to be better now, the user is not able to create things where he shouldn't and the links are gone.
I'm still seeing the line of checkboxes get emptied when I go back to the book permissions page: http://i.imgur.com/QKvuSGx.gifv
The permissions definitely are applying because the user was able to create a page under this book.
The user is still in the role with no default permissions, but they're allowed to view everything. Now that the permissions have been flipped around, I think the default should probably be view nothing.
@ssddanbrown commented on GitHub (Mar 31, 2016):
@nwalke Thanks for the GIF, Seriously useful. Unfortunately I still cannot work it out. I saw you're using OSX so I tried out the checkboxes on my iPad as well as in a chrome/firefox/safari OSX instance on BrowserStack but I could not replicate that issue. When you inspect those check boxes do they have the
checked="checked"attribute set?I agree with your last point about having a default with no view permissions since that would enable the ability to have a 'whitelist' permission approach. I've opened a separate issue, #92, for this. Since that will require some database changes for a smooth upgrade it'll be in the next release rather than as a bug fix release.
@nwalke commented on GitHub (Mar 31, 2016):
Trying Chrome on Windows now, same issue. When I look at the inputs, there is no
checked="checked".@ssddanbrown commented on GitHub (Apr 3, 2016):
@nwalke Thanks for letting me know, Definitely an app issue then. I've simplified the logic for whether the checkboxes should be checked, to prevent any extra interference. This update has been applied on the master branch.
Let me know if that fixes the issue.
@nwalke commented on GitHub (Apr 5, 2016):
Still seeing the issue: http://i.imgur.com/CtRMy1h.gif
My user's full name in our bookstack instance is "Nick Walke". It says that it's being updated by the user that created the book, and I know he isn't using it. Hopefully the GIF helps.
@nwalke commented on GitHub (Apr 12, 2016):
Upgraded to the 0.9 release and am still seeing this.
@ssddanbrown commented on GitHub (Apr 13, 2016):
Yeah, Sorry, Not sure what it can be at this stage. Have you definitely been doing a composer install as part of your update process?
Really, It must be something on this line. You could try changing that to:
to force it to load the restrictions straight from the database in case the restrictions on an entity are sticking around.
@nwalke commented on GitHub (May 13, 2016):
This is working now. A couple things I did...
We had super weird errors happening when saving drafts to pages, turns out we were on PHP 5.5 instead of 7 (ended up that the chapter ID being returned for a draft not under a chapter was the string "0" instead of the int 0). I upgraded us to PHP 7 and that was no longer an issue. I also noticed that we hadn't explicitly used UTF8 when creating the database, so I did that as well. One or both of those has fixed this for me.
@ssddanbrown commented on GitHub (May 13, 2016):
@nwalke Awesome, glad it's now sorted. Hope you get a nice little speed boost with PHP7 😄