This fork contains a few changes to the permissions system. Most of them are were contributed to upstream, but not accepted, in PR8013. We have since migrated to V3 and will contribute similar features in the future.
This fork fixes how Wiki.js evaluates page rule specificity when a user belongs to multiple groups with overlapping rules.
Problem: The upstream code compares rule specificity using raw string length (rule.path.length), causing higher-priority match types to lose against longer path strings.
Fix: Each match type now gets a deterministic specificity score. The full priority chain, from lowest to highest:
- Path Starts With —
segments + separators(e.g.Projects/secret= 3) - Path Ends With — same formula + 0.5
- Path Matches Regex —
MAX_SAFE_INTEGER - 2 - Tag Matches —
MAX_SAFE_INTEGER - 1 - Path is Exactly —
MAX_SAFE_INTEGER
At equal specificity, DENY overrides ALLOW. No other tie-breaking is needed.
Page tree fix: The upstream tree resolver passes only path and locale to access checks, making TAG and REGEX rules invisible in the sidebar. This fork fetches each page's tags from the database and passes them through. Folders that would otherwise be hidden are shown if any descendant page passes the access check, so tag-only or regex-only rules still produce a navigable tree.
Docker images are published to ghcr.io/alacrity-education/wikijs.
- Official Website
- Documentation
- Requirements
- Installation
- Demo
- Changelog
- Feature Requests
- Chat with us on Discord
- Translations (We need your help!)
- Special Thanks
- Contribute
Follow our Twitter feed to learn about upcoming updates and new releases!
Wiki.js is an open source project that has been made possible due to the generous contributions by community backers. If you are interested in supporting this project, please consider becoming a sponsor, becoming a patron, donating to our OpenCollective, via Paypal or via Ethereum (0xe1d55c19ae86f6bcbfb17e7f06ace96bdbb22cb5).
Support this project by becoming a sponsor. Your name will show up in the Contribute page of all Wiki.js installations as well as here with a link to your website! [Become a sponsor]
|
|
Alexander Casassovici (@alexksso) |
Broxen (@broxen) |
Dacon (@xDacon) |
Maxime Pierre (@DonNabla) |
|
|
|
Jay Daley (@JayDaley) |
Oleksii (@idokka) |
|
|
Shane Kearney (@shanekearney) |
|
|
|
Support this project by becoming a sponsor. Your logo will show up in the Contribute page of all Wiki.js installations as well as here with a link to your website! [Become a sponsor]
Thank you to all our patrons! 🙏 [Become a patron]
Thank you to all our backers! 🙏 [Become a backer]
This project exists thanks to all the people who contribute. [Contribute].
Browserstack for providing access to their great cross-browser testing tools.
Cloudflare for providing their great CDN, SSL and advanced networking services.
DigitalOcean for providing hosting of the Wiki.js documentation site and APIs.
Icons8 for providing access to their beautiful icon sets.
Lokalise for providing access to their great localization tool.
MacStadium for providing access to their Mac hardware in the cloud.
Netlify for providing hosting for our website.
ngrok for providing access to their great HTTP tunneling services.
Porkbun for providing domain registration services.







