Commit de539d3e by James Henstridge

Rework the OpenID consumer code to be a bit clearer, and make it

possible to set a fixed OpenID server URL.
parent 0936a94a
from django import forms
from django.utils.translation import ugettext as _
from django.conf import settings
from openid.yadis import xri
class OpenIDLoginForm(forms.Form):
openid_url = forms.CharField(max_length=255, widget=forms.widgets.TextInput(attrs={'class': 'required openid'}))
def clean_openid_url(self):
if 'openid_url' in self.cleaned_data:
openid_url = self.cleaned_data['openid_url']
if xri.identifierScheme(openid_url) == 'XRI' and getattr(
settings, 'OPENID_DISALLOW_INAMES', False
):
raise forms.ValidationError(_('i-names are not supported'))
return self.cleaned_data['openid_url']
from django.contrib.auth.models import User
from django.db import models from django.db import models
class Nonce(models.Model): class Nonce(models.Model):
server_url = models.CharField(max_length=2047) server_url = models.CharField(max_length=2047)
timestamp = models.IntegerField() timestamp = models.IntegerField()
...@@ -20,3 +22,7 @@ class Association(models.Model): ...@@ -20,3 +22,7 @@ class Association(models.Model):
def __unicode__(self): def __unicode__(self):
return u"Association: %s, %s" % (self.server_url, self.handle) return u"Association: %s, %s" % (self.server_url, self.handle)
class UserOpenID(models.Model):
user = models.ForeignKey(User)
claimed_id = models.TextField(max_length=2047)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Redirecting to your OpenID Provider</title>
</head>
<body>
<h1>Redirecting to your OpenID Provider</h1>
{{ form }}
</body>
</html>
...@@ -26,12 +26,15 @@ input.openid { ...@@ -26,12 +26,15 @@ input.openid {
</p> </p>
{% endif %} {% endif %}
<form name="fopenid" action="{{ action }}" method="post"> <form name="fopenid" action="{{ action }}" method="post">
{{ form.next }}
<fieldset> <fieldset>
<legend>{% trans "Sign In Using Your OpenID" %}</legend> <legend>{% trans "Sign In Using Your OpenID" %}</legend>
<div class="form-row"><label for="id_openid_ul">{% trans "OpenId URL :" %}</label><br />{{ form.openid_url }}</div> <div class="form-row"><label for="id_openid_ul">{% trans "OpenId URL :" %}</label><br />{{ form.openid_url }}</div>
<div class="submit-row "><input name="bsignin" type="submit" value="{% trans "Sign in with OPENID" %}"></div> <div class="submit-row "><input name="bsignin" type="submit" value="{% trans "Sign in with OPENID" %}"></div>
{% if next %}
<input type="hidden" name="next" value="{{ next }}" />
{% endif %}
</fieldset> </fieldset>
</form> </form>
</body> </body>
......
from django.conf.urls.defaults import patterns
urlpatterns = patterns('django_openidconsumer.views',
(r'^login$', 'login_begin'),
(r'^complete$', 'login_complete'),
)
import base64 import base64
import md5
import operator
import time import time
from django.db.models.query import Q from django.db.models.query import Q
from django.conf import settings
from openid.association import Association as OIDAssociation from openid.association import Association as OIDAssociation
from openid.store.interface import OpenIDStore from openid.store.interface import OpenIDStore
......
...@@ -3,12 +3,12 @@ import views ...@@ -3,12 +3,12 @@ import views
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^$', views.index), (r'^$', views.index),
(r'^openid/$', 'django_openidconsumer.views.begin'), (r'^openid/$', 'django_openidconsumer.views.login_begin'),
(r'^openid/with-sreg/$', 'django_openidconsumer.views.begin', { #(r'^openid/with-sreg/$', 'django_openidconsumer.views.begin', {
'sreg': 'email,nickname', # 'sreg': 'email,nickname',
'redirect_to': '/openid/complete/', # 'redirect_to': '/openid/complete/',
}), #}),
(r'^openid/complete/$', 'django_openidconsumer.views.complete'), (r'^openid/complete/$', 'django_openidconsumer.views.login_complete'),
(r'^openid/signout/$', 'django_openidconsumer.views.signout'), #(r'^openid/signout/$', 'django_openidconsumer.views.signout'),
(r'^next-works/$', views.next_works), (r'^next-works/$', views.next_works),
) )
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment