From 8b7684ddeea1ade0e05782f0053b244fc2cb2f26 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Sat, 20 Oct 2012 00:45:12 +0100 Subject: [PATCH] Simplfy the authentication code --- django-testauth/auth.py | 52 +++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/django-testauth/auth.py b/django-testauth/auth.py index bb1d871..93465b2 100644 --- a/django-testauth/auth.py +++ b/django-testauth/auth.py @@ -1,10 +1,9 @@ -from string import lower import django.utils.simplejson as json import urllib import urllib2 from hashlib import sha1 from django.conf import settings -from django.contrib.auth.models import User, check_password, Group +from django.contrib.auth.models import User, Group class TESTAuthBackend: @@ -13,49 +12,36 @@ class TESTAuthBackend: """ def authenticate(self, username=None, password=None): - valid = False - if username and password: - # Call the webservice + api_url = getattr(settings, 'TEST_AUTH_LOGIN_URL', 'https://auth.pleaseignore.com/api/1.0/login/') - params = { 'user': username, 'pass': sha1(password).hexdigest() } + params = {'user': username, 'pass': sha1(password).hexdigest()} try: raw = urllib2.urlopen('%s?%s' % (api_url, urllib.urlencode(params))) except urllib2.HTTPError: - pass + return else: obj = json.loads(raw.read()) - if 'auth' in obj and obj['auth'] == 'ok': - email = obj['email'] - groups = obj['groups'] - name = None - if obj.has_key('primarycharacter'): - name = obj['primarycharacter']['name'] - valid = True + user, created = User.objects.get_or_create(username=username.lower()) + if created: + user.set_unusable_password() + if 'email' in obj and obj['email'] != '': + user.email = obj['email'] + if 'primarycharacter' in obj and 'name' in obj['primarycharacter']: + user.first_name = obj['primarycharacter']['name'] + user.save() - if valid: - user, created = User.objects.get_or_create(username=username.lower()) - if created: - user.set_unusable_password() # disable login through Model backend - if email: - user.email = email - if name: - user.first_name = name - user.save() + if getattr(settings, 'TEST_AUTH_CREATE_GROUPS', False): + user.groups.clear() + for g in obj['groups']: + group, created = Group.objects.get_or_create(name=g['name']) + user.groups.add(group) - if getattr(settings, 'TEST_AUTH_CREATE_GROUPS', False): - user.groups.clear() - for g in groups: - group, created = Group.objects.get_or_create(name=g['name']) - user.groups.add(group) - - return user - return None + return user def get_user(self, user_id): try: return User.objects.get(pk=user_id) except User.DoesNotExist: - return None - + return