v1.2.15 - 2017-08-17 - Documentation improvements
-------------------------------------------------

- Fix `#83`_: Improved documentation for finding the official repository and
  contributing.

.. _#83: https://bitbucket.org/illocution/django-auth-ldap/issues/83/


v1.2.14 - 2017-07-24 - User DN caching
--------------------------------------

- Fix `#82`_: Under search/bind mode, the user's DN will now be cached for
  performance.

.. _#82: https://bitbucket.org/illocution/django-auth-ldap/issues/82/


v1.2.13 - 2017-06-19 - Selective group mirroring
------------------------------------------------

- Support selective group mirroring with :setting:`AUTH_LDAP_MIRROR_GROUPS` and
  :setting:`AUTH_LDAP_MIRROR_GROUPS_EXCEPT`.

- Fix `#73`_: Work around Django 1.11 bug with multiple authentication backends.

.. _#73: https://bitbucket.org/illocution/django-auth-ldap/issues/73/


v1.2.12 - 2017-05-20 - Complex group queries
--------------------------------------------

- Support for complex group queries via
  :class:`~django_auth_ldap.config.LDAPGroupQuery`.


v1.2.11 - 2017-04-22 - Testing and debugging cleanup
----------------------------------------------------

- Some more descriptive object representations.

- Improved tox.ini organization.


v1.2.9 - 2017-02-14 - Fix python-ldap incompatibility
-----------------------------------------------------

- Fix `#65`_: Ignore python-ldap documentation and accept
  :data:`ldap.RES_SEARCH_ENTRY` from :meth:`ldap.LDAPObject.result`.

.. _#65: https://bitbucket.org/illocution/django-auth-ldap/issues/65/


v1.2.8 - 2016-04-18 - AUTH_LDAP_USER_ATTRLIST
---------------------------------------------

- Add :setting:`AUTH_LDAP_USER_ATTRLIST` to override the set of attributes
  requested from the LDAP server.


v1.2.7 - 2015-09-29 - Python 3
------------------------------

- Support Python 3 with `pyldap <https://pypi.python.org/pypi/pyldap>`_.


v1.2.6 - 2015-03-29
-------------------

- Performance improvements to group mirroring (from
  `Denver Janke <https://bitbucket.org/denverjanke>`_).

- Add :data:`django_auth_ldap.backend.ldap_error` signal for custom handling of
  :exc:`~ldap.LDAPError` exceptions.

- Add :data:`django_auth_ldap.backend.LDAPBackend.default_settings` for
  per-subclass default settings.


v1.2.5 - 2015-01-30
-------------------

- Fix interaction between :setting:`AUTH_LDAP_AUTHORIZE_ALL_USERS` and
  :setting:`AUTH_LDAP_USER_SEARCH`.


v1.2.4 - 2014-12-28 - nisNetgroup support
-----------------------------------------

- Add support for nisNetgroup groups (thanks to Christopher Bartz).


v1.2.3 - 2014-11-18
-------------------

- Fix `#50`_: Improved escaping for filter strings.

- Accept (and ignore) arbitrary keyword arguments to
  :meth:`~django_auth_ldap.backend.LDAPBackend.authenticate`.

.. _#50: https://bitbucket.org/illocution/django-auth-ldap/issue/50/


v1.2.2 - 2014-09-22
-------------------

- Include test harness in source distribution. Some package maintainers find
  this helpful.


v1.2.1 - 2014-08-24
-------------------

- More verbose log messages for authentication failures.


v1.2 - 2014-04-10
-----------------

- django-auth-ldap now provides experimental Python 3 support. Python 2.5 was
  dropped.

  To sum up, django-auth-ldap works with Python 2.6, 2.7, 3.3 and 3.4.

  Since python-ldap isn't making progress toward Python 3, if you're using
  Python 3, you need to install a fork::

      $ pip install git+https://github.com/rbarrois/python-ldap.git@py3

  Thanks to `Aymeric Augustin <https://myks.org/en/>`_ for making this happen.


v1.1.8 - 2014-02-01
-------------------

* Fix `#43`_: Update :class:`~django_auth_ldap.config.LDAPSearchUnion` to work for
  group searches in addition to user searches.

* Tox no longer supports Python 2.5, so our tests now run on 2.6 and 2.7 only.

.. _#43: https://bitbucket.org/illocution/django-auth-ldap/issue/43/


v1.1.7 - 2013-11-19
-------------------

* Bug fix: :setting:`AUTH_LDAP_GLOBAL_OPTIONS` could be ignored in some cases
  (such as :func:`~django_auth_ldap.backend.LDAPBackend.populate_user`).


v1.1.5 - 2013-10-25
-------------------

* Fix `#41`_: Support POSIX group permissions with no gidNumber attribute.

* Support multiple group DNs for \*_FLAGS_BY_GROUP.


.. _#41: https://bitbucket.org/illocution/django-auth-ldap/issue/41/


v1.1.4 - 2013-03-09
-------------------

* Add support for Django 1.5's custom user models.


v1.1.3 - 2013-01-05
-------------------

* Fix `#33`_: Reject empty passwords by default.

  Unless :setting:`AUTH_LDAP_PERMIT_EMPTY_PASSWORD` is set to True,
  LDAPBackend.authenticate() will immediately return None if the password is
  empty. This is technically backwards-incompatible, but it's a more secure
  default for those LDAP servers that are configured such that binds without
  passwords always succeed.

* Fix `#39`_: Add support for pickling LDAP-authenticated users.


.. _#33: https://bitbucket.org/illocution/django-auth-ldap/issue/33/
.. _#39: https://bitbucket.org/illocution/django-auth-ldap/issue/39/


.. vim: ft=rst nospell tw=80
