diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-12-06 14:48:59 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-12-06 14:48:59 -0500 |
commit | 70c65268fe017014b97dbc18e02588b8ed1d9a19 (patch) | |
tree | d843b97b1458e696f7e9e993295e5961cc06903d /doc/plugin-group-provider.markdown | |
parent | 6d4286ec664f1df8b0e97b759075afbf34d9620a (diff) |
Update plugin doc
Diffstat (limited to 'doc/plugin-group-provider.markdown')
-rw-r--r-- | doc/plugin-group-provider.markdown | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/doc/plugin-group-provider.markdown b/doc/plugin-group-provider.markdown new file mode 100644 index 00000000..b62ecaa6 --- /dev/null +++ b/doc/plugin-group-provider.markdown @@ -0,0 +1,55 @@ +Custom Group Providers +====================== + +Kanboard is able to load groups from an external system. +This feature is mainly used for project permissions. + +Project managers can allow access to a project for a group. +The end-user will use an auto-complete box and search for a group. + +Each time a group query is executed, all registered group providers are executed. + +Group Provider Workflow +----------------------- + +1. The end-user start to type the group name in the auto-complete field +2. The `GroupManager` class will execute the query across all registered group providers +3. Results are merged an returned to the user interface +4. After selecting a group, the information of the group are synced to the local database if necessary + +Group Provider Interface +------------------------ + +Interface to implement: `Kanboard\Core\Group\GroupProviderInterface`. + +Classes that implements this interface abstract the group information, there are only 3 methods: + +- `getInternalId()`: Get internal database id, return 0 otherwise +- `getExternalId()`: Get external unique id +- `getName()`: Get group name + +Kanboard will use the external id to sync with the local database. + +Group Backend Provider Interface +-------------------------------- + +Interface to implement: `Kanboard\Core\Group\GroupBackendProviderInterface`. + +This interface require only one method: `find($input)`. +The argument `$input` is the text entered from the user interface. + +This method must return a list of `GroupProviderInterface`, this is the result of the search. + +Backend Registration from Plugins +--------------------------------- + +In the method `initialize()` of your plugin register your custom backend like that: + +```php +$groupManager->register(new MyCustomLdapBackendGroupProvider($this->container)); +``` + +Examples +-------- + +- [Group providers included in Kanboard (LDAP and Database)](https://github.com/fguillot/kanboard/tree/master/app/Group) |