Newer
Older
ldapcherry / docs / backend_api.rst
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