Refactor apps to be in repo folder

This commit is contained in:
Isaac Bythewood
2018-02-08 21:57:49 -05:00
parent 9d00c74d18
commit 1fcdf2a9a3
33 changed files with 15 additions and 15 deletions

43
users/auth/backends.py Normal file
View File

@@ -0,0 +1,43 @@
import re
from core.models import Pin
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
def has_perm(self, user, perm, obj=None):
"""
A very simplistic authorization mechanism for now. Basically a pin owner can do anything with the pin.
"""
if obj and isinstance(obj, Pin):
return obj.submitter == user
return False