Fixes
* Avoid binding the connection twice [142](https://github.com/jupyterhub/ldapauthenticator/pull/142) ([m2hofi94](https://github.com/m2hofi94))
* Gracefully handle username lookups with list return values [117](https://github.com/jupyterhub/ldapauthenticator/pull/117) ([metrofun](https://github.com/metrofun))
* Misc cleanup + fixes [95](https://github.com/jupyterhub/ldapauthenticator/pull/95) ([dhirschfeld](https://github.com/dhirschfeld)) - *Empty DN templates are now ignored*, `search_filter` and `allowed_groups` are no longer mutually exclusive*.
Improvements
* Allow authentication with empty bind_dn_template when using lookup_dn [106](https://github.com/jupyterhub/ldapauthenticator/pull/106) ([behrmann](https://github.com/behrmann))
* Ignore username returned by resolve_username [105](https://github.com/jupyterhub/ldapauthenticator/pull/105) ([behrmann](https://github.com/behrmann)) - *`use_lookup_dn_username` configuration option added*
* Lookup additional LDAP user info [103](https://github.com/jupyterhub/ldapauthenticator/pull/103) ([manics](https://github.com/manics)) - *user_info_attributes is now saved in auth_state for a valid user*.
Maintenance
* Fix CI linting failures and add testing of Py38 [157](https://github.com/jupyterhub/ldapauthenticator/pull/157) ([consideRatio](https://github.com/consideRatio))
* Add long description for pypi [155](https://github.com/jupyterhub/ldapauthenticator/pull/155) ([manics](https://github.com/manics))
* Add badges according to team-compass [154](https://github.com/jupyterhub/ldapauthenticator/pull/154) ([consideRatio](https://github.com/consideRatio))
* Travis deploy tags to PyPI [153](https://github.com/jupyterhub/ldapauthenticator/pull/153) ([manics](https://github.com/manics))
* Add bind_dn_template to Active Directory instructions [147](https://github.com/jupyterhub/ldapauthenticator/pull/147) ([irasnyd](https://github.com/irasnyd))
* Expand contributor's guide [135](https://github.com/jupyterhub/ldapauthenticator/pull/135) ([marcusianlevine](https://github.com/marcusianlevine))
* Add Travis CI setup and simple tests [134](https://github.com/jupyterhub/ldapauthenticator/pull/134) ([marcusianlevine](https://github.com/marcusianlevine))
* Update project url in setup.py [92](https://github.com/jupyterhub/ldapauthenticator/pull/92) ([dhirschfeld](https://github.com/dhirschfeld))
* Update README.md [85](https://github.com/jupyterhub/ldapauthenticator/pull/85) ([dhirschfeld](https://github.com/dhirschfeld))
* Bump version to 1.2.2 [84](https://github.com/jupyterhub/ldapauthenticator/pull/84) ([dhirschfeld](https://github.com/dhirschfeld))
Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyterhub/ldapauthenticator/graphs/contributors?from=2018-06-14&to=2020-01-31&type=c))
[behrmann](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Abehrmann+updated%3A2018-06-14..2020-01-31&type=Issues) | [betatim](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Abetatim+updated%3A2018-06-14..2020-01-31&type=Issues) | [consideRatio](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3AconsideRatio+updated%3A2018-06-14..2020-01-31&type=Issues) | [dhirschfeld](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Adhirschfeld+updated%3A2018-06-14..2020-01-31&type=Issues) | [irasnyd](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Airasnyd+updated%3A2018-06-14..2020-01-31&type=Issues) | [m2hofi94](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Am2hofi94+updated%3A2018-06-14..2020-01-31&type=Issues) | [manics](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Amanics+updated%3A2018-06-14..2020-01-31&type=Issues) | [marcusianlevine](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Amarcusianlevine+updated%3A2018-06-14..2020-01-31&type=Issues) | [meeseeksmachine](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Ameeseeksmachine+updated%3A2018-06-14..2020-01-31&type=Issues) | [metrofun](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Ametrofun+updated%3A2018-06-14..2020-01-31&type=Issues) | [ramkrishnan8994](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Aramkrishnan8994+updated%3A2018-06-14..2020-01-31&type=Issues) | [titansmc](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Atitansmc+updated%3A2018-06-14..2020-01-31&type=Issues) | [yuvipanda](https://github.com/search?q=repo%3Ajupyterhub%2Fldapauthenticator+involves%3Ayuvipanda+updated%3A2018-06-14..2020-01-31&type=Issues)