|
12345678910111213141516171819202122232425262728293031323334353637 |
- import re
-
- from users.models import User
-
-
- email_re = re.compile(
- r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # dot-atom
- # quoted-string, see also http://tools.ietf.org/html/rfc2822#section-3.2.5
- r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"'
- r')@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)$)'
- # domain
- 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)
-
-
- class CombinedAuthBackend(object):
- def authenticate(self, username=None, password=None):
- is_email = email_re.match(username)
- if is_email:
- qs = User.objects.filter(email=username)
- else:
- qs = User.objects.filter(username=username)
-
- try:
- user = qs.get()
- except User.DoesNotExist:
- return None
- if user.check_password(password):
- return user
- return None
-
- def get_user(self, user_id):
- try:
- return User.objects.get(pk=user_id)
- except User.DoesNotExist:
- return None
|