Guest User

Untitled

a guest
Jun 4th, 2018
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. import ldap
  2. import settings
  3. from django.contrib.auth.models import User
  4.  
  5. class LdapBackend:
  6. def authenticate(self, username=None, password=None):
  7. base = settings.AUTH_LDAP_BASE_DN
  8. filter = '(&(objectclass=person) (uid=%s))' % username
  9. ret = ['dn', 'mail']
  10.  
  11. try:
  12. l = ldap.initialize(settings.AUTH_LDAP_SERVER_URI)
  13. l.protocol_version = ldap.VERSION3
  14. except ldap.LDAPError:
  15. return None
  16.  
  17. try:
  18. result_id = l.search(base, ldap.SCOPE_SUBTREE, filter, ret)
  19. result_type, result_data = l.result(result_id, 0)
  20. if (len(result_data) != 1):
  21. return None
  22.  
  23. l.simple_bind_s(result_data[0][0], password)
  24.  
  25. try:
  26. user = User.objects.get(username__exact=username)
  27. except:
  28. user = User.objects.create_user(username, result_data[0][1]['mail'][0])
  29. user.is_staff = False
  30. user.save()
  31. return user
  32. except ldap.INVALID_CREDENTIALS:
  33. return None
  34.  
  35. def get_user(self, user_id):
  36. try:
  37. return User.objects.get(pk=user_id)
  38. except User.DoesNotExist:
  39. return None
Add Comment
Please, Sign In to add comment