Update plugin doc
This commit is contained in:
39
doc/plugin-authorization-architecture.markdown
Normal file
39
doc/plugin-authorization-architecture.markdown
Normal file
@@ -0,0 +1,39 @@
|
||||
Authorization Architecture
|
||||
==========================
|
||||
|
||||
Kanboard [supports multiple roles](roles.markdown) at the application level and at the project level.
|
||||
|
||||
Authorization Workflow
|
||||
----------------------
|
||||
|
||||
For each HTTP request:
|
||||
|
||||
1. Authorize or not access to the resource based on the application access list
|
||||
2. If the resource is for a project (board, task...):
|
||||
1. Fetch user role for this project
|
||||
2. Grant/Denied access based on the project access map
|
||||
|
||||
Extending access Map
|
||||
--------------------
|
||||
|
||||
The Access List (ACL) is based on the controller class name and the method name.
|
||||
The list of access are handled by the class `Kanboard\Core\Security\AccessMap`.
|
||||
|
||||
There are two access map: one for the application and another one for projects.
|
||||
|
||||
- Application access map: `$this->applicationAccessMap`
|
||||
- Project access map: `$this->projectAccessMap`
|
||||
|
||||
Example to define a new policy from your plugin:
|
||||
|
||||
```php
|
||||
// All methods of the class MyController:
|
||||
$this->projectAccessMap->add('MyController', '*', Role::PROJECT_MANAGER);
|
||||
|
||||
// All some methods:
|
||||
$this->projectAccessMap->add('MyOtherController', array('create', 'save'), Role::PROJECT_MEMBER);
|
||||
```
|
||||
|
||||
Roles are defined in the class `Kanboard\Core\Security\Role`.
|
||||
|
||||
The Authorization class (`Kanboard\Core\Security\Authorization`) will check the access for each page.
|
||||
Reference in New Issue
Block a user