def login_begin(request, template_name='openid/login.html', redirect_field_name=REDIRECT_FIELD_NAME): """Begin an OpenID login request, possibly asking for an identity URL.""" redirect_to = request.REQUEST.get(redirect_field_name, '') # Get the OpenID URL to try. First see if we've been configured # to use a fixed server URL. openid_url = getattr(settings, 'OPENID_SSO_SERVER_URL', None) if openid_url is None: if request.POST: login_form = OpenIDLoginForm(data=request.POST) if login_form.is_valid(): openid_url = login_form.cleaned_data['openid_identifier'] else: login_form = OpenIDLoginForm() # Invalid or no form data: if openid_url is None: return render_to_response(template_name, { 'form': login_form, redirect_field_name: redirect_to }, context_instance=RequestContext(request)) error = None consumer = make_consumer(request) try: openid_request = consumer.begin(openid_url) except DiscoveryFailure, exc: return render_failure( request, "OpenID discovery error: %s" % (str(exc),), status=500)
def homepage(request): if request.method == 'POST': # If the form has been submitted... form = OpenIDLoginForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass # Process the data in form.cleaned_data # ... return OpenIDProcess.login_begin(request, template_name='openid/login.html', login_complete_view='openid-complete', form_class=OpenIDLoginForm, render_failure=OpenIDProcess.default_render_failure, redirect_field_name=REDIRECT_FIELD_NAME) else: form = OpenIDLoginForm() # An unbound form return render_to_response('homepage.html', {'form': form}, context_instance=RequestContext(request))
def accounts_login(request, template_name='accounts/login.html', *args, **kwargs): # create both the OpenID and django.contrib.auth login form openid_form = OpenIDLoginForm() # change the label text to something nicer openid_form.fields['openid_identifier'].label = _("OpenID") if request.method == "POST": auth_form = AuthenticationForm(data=request.POST) # If is_valid() returns true we can be 99% certain there won't be an error when loggging in if auth_form.is_valid(): # Pass control to django_auth and return the result return django.contrib.auth.views.login(request, auth_form.get_user()) else: auth_form = AuthenticationForm() return render_to_response(template_name, { 'auth_form': auth_form, 'openid_form': openid_form }, context_instance=RequestContext(request))
def openid_form(context): """Tag for rendering openid sign in form and return it in place""" context.update({'form': OpenIDLoginForm()}) return context