mirror of
https://github.com/kakwa/ldapcherry
synced 2024-11-22 01:14:21 +01:00
aa7db36efc
the demo backend is far simplier than the ldap backend, so it's more logic to use it as an implementation example
73 lines
1.7 KiB
ReStructuredText
73 lines
1.7 KiB
ReStructuredText
Implementing cutom backends
|
|
===========================
|
|
|
|
API
|
|
---
|
|
|
|
The backend modules must respect the following API:
|
|
|
|
.. autoclass:: ldapcherry.backend.Backend
|
|
:members: __init__, auth, add_user, del_user, set_attrs, add_to_groups, del_from_groups, search, get_user, get_groups
|
|
:undoc-members:
|
|
:show-inheritance:
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
Configuration for your backend is declared in the main ini file, inside [backends] section:
|
|
|
|
For example with the configuration:
|
|
|
|
.. sourcecode:: ini
|
|
|
|
[backends]
|
|
|
|
# class path to module
|
|
b_id.module = "my.backend.module"
|
|
|
|
b_id.param1 = "my value 1"
|
|
b_id.param2 = "my value 2"
|
|
|
|
.. note::
|
|
|
|
One module can be instanciated several times, the prefix b_id permits
|
|
to differenciate instances and their specific configuration.
|
|
|
|
The following hash will be passed as configuration to the module constructor as parameter config:
|
|
|
|
.. sourcecode:: python
|
|
|
|
{
|
|
'param1': "my value 1",
|
|
'param2': "my value 2",
|
|
}
|
|
|
|
After having set **self.config** to **config** in the constructor, parameters can be recovered
|
|
by **self.get_param**:
|
|
|
|
.. autoclass:: ldapcherry.backend.Backend
|
|
:members: get_param
|
|
:undoc-members:
|
|
:show-inheritance:
|
|
|
|
|
|
Exceptions
|
|
----------
|
|
|
|
The following exception can be used in your module
|
|
|
|
.. automodule:: ldapcherry.exceptions
|
|
:members: UserDoesntExist, UserAlreadyExists, GroupDoesntExist
|
|
:undoc-members:
|
|
:show-inheritance:
|
|
|
|
These exceptions permit a nicer error handling and avoid a generic message to be thrown at the user.
|
|
|
|
Example
|
|
-------
|
|
|
|
Here is the ldap backend module that comes with LdapCherry:
|
|
|
|
.. literalinclude:: ../ldapcherry/backend/backendDemo.py
|
|
:language: python
|