Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 25th, 2012  |  syntax: None  |  size: 2.31 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Can I use django-nonrel and a custom auth backend?
  2. from django.contrib.auth.models import User, check_password
  3.  
  4.     class EmailAuthBackend(object):
  5.         """
  6.         Email Authentication Backend
  7.  
  8.         Allows a user to sign in using an email/password pair rather than
  9.         a username/password pair.
  10.         """
  11.         supports_anonymous_user = False
  12.         supports_object_permissions = True
  13.  
  14.  
  15.         def authenticate(self, email=None, password=None):
  16.             """ Authenticate a user based on email address as the user name. """
  17.             try:
  18.                 user = User.objects.get(email=email)
  19.                 if user.check_password(password):
  20.                     return user
  21.             except User.DoesNotExist:
  22.                 return None
  23.  
  24.         def get_user(self, user_id):
  25.             """ Get a User object from the user_id. """
  26.             try:
  27.                 return User.objects.get(pk=user_id)
  28.             except User.DoesNotExist:
  29.                 return None
  30.        
  31. def create_new_user(request):
  32.     if request.method == 'POST':
  33.         data = request.POST.copy()
  34.         data['username'] = ''.join([choice(letters) for i in xrange(30)])
  35.         data['password'] = data['password1']
  36.         form = CustomUserCreationForm(data)
  37.         if form.is_valid():
  38.             user = form.save(commit=False)
  39.             # user must be active for login to work
  40.             user.is_active = True
  41.             user.save() #not sure if this is actually saving
  42.             new_user = authenticate(username=data['username'],
  43.                     password=data['password'])
  44.             if new_user is None:
  45.                 messages.error(request,"God damn it.")
  46.             login(request, new_user)
  47.  
  48.             messages.info(request, "Thanks for registering! You are
  49.                                                             now logged in.")
  50.             return render_to_response('invoicer/welcome.html',
  51.                                                      {'user':new_user})
  52.  
  53.         else:
  54.             messages.error(request, form._errors)
  55.             return HttpResponseRedirect('//')
  56.        
  57. def authenticate(self, username=None, email=None, password=None):
  58.         """ Authenticate a user based on email address as the user name. """
  59.         if username:
  60.             might_be_email = username
  61.         elif email:
  62.             might_be_email = email