def signin(request, sreg=None, extension_args={}, on_failure=default_on_failure): openid_url = None if is_valid_next_url(request.GET.get('next')): next = request.GET['next'] elif is_valid_next_url(get_address(request.META.get('HTTP_REFERER'), request)): next = get_address(request.META['HTTP_REFERER'], request) else: next = getattr(settings, 'OPENID_REDIRECT_NEXT', '/') def get_with_next(url, next): if next: return '%s?%s' % (url, urlencode({'next': next})) else: return url if request.user.is_authenticated() and 'force' not in request.GET: return HttpResponseRedirect(next) request_path = get_with_next(request.path, next) if request.method == 'POST': form = OpenidSigninForm(request.POST, auto_id='id_%s') if form.is_valid(): # first remove email and nickname from sreg if the are in to prevent dup extension_args['sreg.optional'] = 'email,nickname' if sreg: sreg = ','.join([arg for arg in sreg.split(',') if arg not in extension_args['sreg.optional']]) extension_args['sreg.optional'] += ',' + sreg trust_root = getattr(settings, 'OPENID_TRUST_ROOT', absolutize_uri(request, '/')) redirect_to = get_with_next(absolutize_uri(request, reverse('openid_complete')), next) if xri.identifierScheme(form.cleaned_data['openid_url']) == 'XRI' and getattr( settings, 'OPENID_DISALLOW_INAMES', False): return on_failure(request, _("i-names are not supported")) consumer = Consumer(request.session, DjangoOpenIDStore()) try: auth_request = consumer.begin(form.cleaned_data['openid_url']) except DiscoveryFailure: return on_failure(request, _("The OpenID was invalid")) # Add extension args (for things like simple registration) for name, value in extension_args.items(): namespace, key = name.split('.', 1) auth_request.addExtensionArg(namespace, key, value) redirect_url = auth_request.redirectURL(trust_root, redirect_to) return HttpResponseRedirect(redirect_url) else: form = OpenidSigninForm(auto_id='id_%s') return { 'form': form, 'action': request_path, }
def signin(request, sreg=None, extension_args={}, on_failure=default_on_failure): openid_url = None if is_valid_next_url(request.GET.get("next")): next = request.GET["next"] elif is_valid_next_url(get_address(request.META.get("HTTP_REFERER"), request)): next = get_address(request.META["HTTP_REFERER"], request) else: next = getattr(settings, "OPENID_REDIRECT_NEXT", "/") def get_with_next(url, next): if next: return "%s?%s" % (url, urlencode({"next": next})) else: return url if request.user.is_authenticated() and "force" not in request.GET: return HttpResponseRedirect(next) request_path = get_with_next(request.path, next) if request.method == "POST": form = OpenidSigninForm(request.POST, auto_id="id_%s") if form.is_valid(): # first remove email and nickname from sreg if the are in to prevent dup extension_args["sreg.optional"] = "email,nickname" if sreg: sreg = ",".join([arg for arg in sreg.split(",") if arg not in extension_args["sreg.optional"]]) extension_args["sreg.optional"] += "," + sreg trust_root = getattr(settings, "OPENID_TRUST_ROOT", absolutize_uri(request, "/")) redirect_to = get_with_next(absolutize_uri(request, reverse("openid_complete")), next) if xri.identifierScheme(form.cleaned_data["openid_url"]) == "XRI" and getattr( settings, "OPENID_DISALLOW_INAMES", False ): return on_failure(request, _("i-names are not supported")) consumer = Consumer(request.session, DjangoOpenIDStore()) try: auth_request = consumer.begin(form.cleaned_data["openid_url"]) except DiscoveryFailure: return on_failure(request, _("The OpenID was invalid")) # Add extension args (for things like simple registration) for name, value in extension_args.items(): namespace, key = name.split(".", 1) auth_request.addExtensionArg(namespace, key, value) redirect_url = auth_request.redirectURL(trust_root, redirect_to) return HttpResponseRedirect(redirect_url) else: form = OpenidSigninForm(auto_id="id_%s") return {"form": form, "action": request_path}
def render(self, context): if 'request' not in context: return self.local_url return absolutize_uri(context['request'], self.local_url)
def render(self, context): local_url = self.urlnode.render(context) if 'request' not in context: return local_url return absolutize_uri(context['request'], local_url)
def signin(request, sreg=None, extension_args={}, on_failure=default_on_failure): openid_url = None if is_valid_next_url(request.GET.get('next')): next = request.GET['next'] elif is_valid_next_url( get_address(request.META.get('HTTP_REFERER'), request)): next = get_address(request.META['HTTP_REFERER'], request) else: next = getattr(settings, 'OPENID_REDIRECT_NEXT', '/') def get_with_next(url, next): if next: return '%s?%s' % (url, urlencode({'next': next})) else: return url if request.user.is_authenticated() and 'force' not in request.GET: return HttpResponseRedirect(next) request_path = get_with_next(request.path, next) if request.method == 'POST': form = OpenidSigninForm(request.POST, auto_id='id_%s') if form.is_valid(): # first remove email and nickname from sreg if the are in to prevent dup extension_args['sreg.optional'] = 'email,nickname' if sreg: sreg = ','.join([ arg for arg in sreg.split(',') if arg not in extension_args['sreg.optional'] ]) extension_args['sreg.optional'] += ',' + sreg trust_root = getattr(settings, 'OPENID_TRUST_ROOT', absolutize_uri(request, '/')) redirect_to = get_with_next( absolutize_uri(request, reverse('openid_complete')), next) if xri.identifierScheme( form.cleaned_data['openid_url']) == 'XRI' and getattr( settings, 'OPENID_DISALLOW_INAMES', False): return on_failure(request, _("i-names are not supported")) consumer = Consumer(request.session, DjangoOpenIDStore()) try: auth_request = consumer.begin(form.cleaned_data['openid_url']) except DiscoveryFailure: return on_failure(request, _("The OpenID was invalid")) # Add extension args (for things like simple registration) for name, value in extension_args.items(): namespace, key = name.split('.', 1) auth_request.addExtensionArg(namespace, key, value) redirect_url = auth_request.redirectURL(trust_root, redirect_to) return HttpResponseRedirect(redirect_url) else: form = OpenidSigninForm(auto_id='id_%s') return { 'form': form, 'action': request_path, }