[damned-lies] Fix registration by OpenID
- From: Claude Paroz <claudep src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [damned-lies] Fix registration by OpenID
- Date: Tue, 19 Apr 2011 17:18:55 +0000 (UTC)
commit c0271905d3b783f8ead536542774c7f6965b3764
Author: Claude Paroz <claude 2xlibre net>
Date: Tue Apr 19 19:18:42 2011 +0200
Fix registration by OpenID
languages/urls.py | 2 +-
people/forms.py | 22 ++++++++++++++++++----
settings.py | 2 +-
3 files changed, 20 insertions(+), 6 deletions(-)
---
diff --git a/languages/urls.py b/languages/urls.py
index e6726aa..068daed 100644
--- a/languages/urls.py
+++ b/languages/urls.py
@@ -6,7 +6,7 @@ urlpatterns = patterns('',
view = 'languages.views.languages',
name = 'languages'),
url(
- regex = r'^(?P<locale>[\w\- ]+)/all/(?P<dtype>(ui|doc)+)/$',
+ regex = r'^(?P<locale>[\w\- ]+)/all/(?P<dtype>(ui|ui-part|doc)+)/$',
view = 'languages.views.language_all',
name = 'language_all'),
url(
diff --git a/people/forms.py b/people/forms.py
index 4493e69..7a8bf2b 100644
--- a/people/forms.py
+++ b/people/forms.py
@@ -2,9 +2,10 @@ import hashlib, random
from django import forms
from django.conf import settings
-from django.utils.translation import ugettext_lazy, ugettext as _
-from django.core.urlresolvers import reverse
from django.contrib.sites.models import Site
+from django.core.urlresolvers import reverse
+from django.utils.translation import ugettext_lazy, ugettext as _
+
from teams.models import Team
from people.models import Person
@@ -30,6 +31,18 @@ class RegistrationForm(forms.Form):
return self.cleaned_data['username']
raise forms.ValidationError(_(u'This username is already taken. Please choose another.'))
+ def clean_openid_url(self):
+ """ Check openid url is not already linked to any existing user """
+ if self.cleaned_data['openid_url']:
+ from django_openid_auth.models import UserOpenID
+ try:
+ oid = UserOpenID.objects.get(claimed_id=self.cleaned_data['openid_url'])
+ except UserOpenID.DoesNotExist:
+ return self.cleaned_data['openid_url']
+ raise forms.ValidationError(_(u'This OpenID URL is already taken by a registered user'))
+ else:
+ return self.cleaned_data['openid_url']
+
def clean(self):
cleaned_data = self.cleaned_data
password1 = cleaned_data.get('password1')
@@ -46,14 +59,15 @@ class RegistrationForm(forms.Form):
""" Create the user """
username = self.cleaned_data['username']
email = self.cleaned_data['email']
-
password = self.cleaned_data['password1']
+
new_user = Person.objects.create_user(username=username,
email=email,
password=password or "!")
openid = self.cleaned_data['openid_url']
if openid:
- new_user.openids.create(openid = openid)
+ from django_openid_auth.models import UserOpenID
+ user_oid = UserOpenID.objects.create(user=new_user, claimed_id=openid)
salt = hashlib.sha1(str(random.random())).hexdigest()[:5]
activation_key = hashlib.sha1(salt+username).hexdigest()
new_user.activation_key = activation_key
diff --git a/settings.py b/settings.py
index ccabeb0..867a9d6 100644
--- a/settings.py
+++ b/settings.py
@@ -155,7 +155,7 @@ if USE_DJANGO_OPENID:
'django_openid_auth.auth.OpenIDBackend',
'django.contrib.auth.backends.ModelBackend',
)
- OPENID_CREATE_USERS = True
+ OPENID_CREATE_USERS = False
OPENID_UPDATE_DETAILS_FROM_SREG = True
OPENID_UPDATE_DETAILS_FROM_AX = True
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]