Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

1234567891011121314151617181920212223242526272829303132333435
  1. import re
  2. from core.models import Pin
  3. from users.models import User
  4. email_re = re.compile(
  5. r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # dot-atom
  6. # quoted-string, see also http://tools.ietf.org/html/rfc2822#section-3.2.5
  7. r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"'
  8. r')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)$)'
  9. # domain
  10. r'|\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$', re.IGNORECASE) # literal form, ipv4 address (SMTP 4.1.3)
  11. class CombinedAuthBackend(object):
  12. def authenticate(self, username=None, password=None):
  13. is_email = email_re.match(username)
  14. if is_email:
  15. qs = User.objects.filter(email=username)
  16. else:
  17. qs = User.objects.filter(username=username)
  18. try:
  19. user = qs.get()
  20. except User.DoesNotExist:
  21. return None
  22. if user.check_password(password):
  23. return user
  24. return None
  25. def get_user(self, user_id):
  26. try:
  27. return User.objects.get(pk=user_id)
  28. except User.DoesNotExist:
  29. return None