Download the PHP package beebmx/kirby-patrol without Composer
On this page you can find all versions of the php package beebmx/kirby-patrol. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download beebmx/kirby-patrol
More information about beebmx/kirby-patrol
Files in beebmx/kirby-patrol
Informations about the package kirby-patrol
Patrol for Kirby
An easy and customizable way to manage access to website pages according to the roles assigned to users within the Kirby panel interface.
Overview
- 1. Installation
- 2. Usage
- 3. Options
- 4. Roadmap
- 5. License
- 6. Credits
Installation
Download
Download and copy this repository to /site/plugins/kirby-patrol.
Composer
Usage
Out of the box, you don't need to do anything to start using (except for installation),
but if you require customizing the default behavior, there are some options to personalize Patrol.
Panel
All users with panel access will see the new area and will be able to update the access to the pages on the website.
If you need to restrict this behavior, you can do so by adding the permission in the user YAML file:
[!NOTE] The
accessis set totrueby default
The pages displayed in the new panel area will be all the site childrens published (with status listed and unlisted)
and two levels inside every page. If you need a specific collection of pages you can change it with the query option
in your config.php file:
And if you need to update the depth of the pages displayed, update the config.php file:
Here's an example of Patrol view page:

Frontend
When a logged-in user visits any page, Patrol will automatically validate the request. If the user has access
to the visited page, they can normally view the content, but if not, an error page will be thrown with a 401 status code.
[!WARNING] It's important that you use a logged-in user when the validation occurs; otherwise, an error will be thrown. If the default
Middleware
Even when Patrol tries to validate a user, it's possible that behavior won't be enough for your own validation.
In that case, you can customize and add additional restrictions to every page.
The middleware process is powered by Middleware, and you can use all features if you need to.
Closure middleware
The easyest way to add additional validation is with Closures.
Added this in the config.php file:
As you can see, the Closure requires two parameters: an Request called $request and a Closure called $next.
The $request contains the stack of previous validations from Patrol and any other middleware triggered.
The second parameter $next, you should call it at the end of the process to proceed to the next validation with the $request.
[!NOTE] You can return a
Response::classobject. When you do that,Patrolwill automatically send the request.
Class middleware
If your own validation is more complex for a simple Closure, you can use a custom class for that purpose:
And your class should look like:
Your middleware logic should be inside the handle method; otherwise, the middleware will never be triggered.
[!NOTE] You can throw an exception
ErrorPageException::classwith your custom data in case you need it.
Redirection
Sometimes you don't need an error in your website to display an error, in that cases you can make a redireccion:
As you can see, when a redirection is set, you don't need to customize an extra middleware.
Utilities
You have utilities available to incorporate into your existing workflow:
User utilities
If you want to validate if a user has access to a given Page:
[!NOTE] Page can be a
stringor aKirby\Cms\Pageobject
If you want to retrieve all the pages with access or without access
[!NOTE] A
truevalue returns all pages with access. Afalsevalue returns all pages without access.
Pages utility
If you want to know if a pages collection have access or not:
[!NOTE] A
truevalue returns all pages with access. Afalsevalue returns all pages without access.
Options
| Option | Default | Type | Description |
|---|---|---|---|
| beebmx.patrol.enabled | true | bool |
Enable access in Kirby Panel |
| beebmx.patrol.icon | keyhole | string |
Icon displayed in Kirby Panel. Options available are: flash keyhole police shield siren star user |
| beebmx.patrol.name | Patrol | string |
Set a string to display in the Kirby Panel. |
| beebmx.patrol.content.columns | 4 | int |
Set how many columns will be displayed into the Patrol view. |
| beebmx.patrol.content.depth | 2 | int |
Set the depth to dig into the pages collection. |
| beebmx.patrol.content.direction | asc | string |
Set the sort direction of the content. |
| beebmx.patrol.content.sort | title | string |
Set the sort value for the content. |
| beebmx.patrol.content.query | null | ?Closure |
Use a specific query to display and validate by Patrol. It requires returning a collection of pages. |
| beebmx.patrol.permissions.default | true | bool |
Set the default values of all the checkboxes when no patrol values are set. |
| beebmx.patrol.permissions.enabled | true | bool |
Enable/Disable the default middleware functionality. |
| beebmx.patrol.permissions.middleware | [] | array |
Additional middleware functionality. |
| beebmx.patrol.permissions.redirect | null | ?string |
Disabled the default middleware functionality and changed it to redirect to a specific URL path. |
[!WARNING] Since version
1.3.0,Patrolchanges the plugin prefix frombeebmx.kirby-patroltobeebmx.patrol.
Here's an example of a full use of the options from the config.php file:
Roadmap
- Custom hooks
- Multilanguage support
- Guest support
License
Licensed under the MIT.
Credits
- Fernando Gutierrez @beebmx
- jonatanjonas
logo - All Contributors
All versions of kirby-patrol with dependencies
getkirby/composer-installer Version ^1.1
beebmx/kirby-middleware Version ^1.0