def form_valid(self, form): """ The request from ulogin service is correct """ response = self.ulogin_response(form.cleaned_data['token'], self.request.get_host()) if 'error' in response: return render(self.request, self.error_template_name, {'json': response}) if self.request.user.is_authenticated(): user, identity, registered = \ self.handle_authenticated_user(response) else: user, identity, registered = \ self.handle_anonymous_user(response) assign.send(sender=ULoginUser, user=self.request.user, request=self.request, registered=registered, ulogin_user=identity, ulogin_data=response) return redirect(self.request.GET.get(REDIRECT_FIELD_NAME) or '/')
def form_valid(self, form): """ The request from ulogin service is correct """ response = self.ulogin_response(form.cleaned_data['token'], self.request.get_host()) if 'error' in response: return render(self.request, self.error_template_name, {'json': response}) if self.request.user.is_authenticated(): user, identity, registered = \ self.handle_authenticated_user(response) else: user, identity, registered = \ self.handle_anonymous_user(response) assign.send(sender=ULoginUser, user=self.request.user, request=self.request, registered=registered, ulogin_user=identity, ulogin_data=response) if registered or not user.is_active: query_dict = QueryDict('').copy() if self.request.GET.get(REDIRECT_FIELD_NAME): query_dict.update({REDIRECT_FIELD_NAME: self.request.GET[REDIRECT_FIELD_NAME]}) return redirect('%s?%s' % (reverse(s.REGISTER_VIEW), query_dict.urlencode(safe='/'))) return redirect(self.request.GET.get(REDIRECT_FIELD_NAME) or '/')
def postback(request): """ """ if request.method != 'POST': return HttpResponseNotAllowed(['POST']) if 'token' not in request.POST: return HttpResponseBadRequest() response = ulogin_response(request.POST['token'], request.get_host()) if 'error' in response: return render(request, 'django_ulogin/error.html', {'json': response}) if request.user.is_authenticated(): user = request.user registered = False ulogin = None if not request.user.ulogin_users.count(): ulogin = ULoginUser.objects.create(network = response['network'], uid = response['uid'], identity = response['identity'], user = user) registered = True # Not authenticated else: try: ulogin = ULoginUser.objects.get(network=response['network'], uid=response['uid']) registered = False user = ulogin.user except ULoginUser.DoesNotExist: user = User() user.username=uuid.uuid4().hex[:30] user.set_unusable_password() user.save() ulogin = ULoginUser.objects.create(network = response['network'], uid = response['uid'], identity = response['identity'], user = user) registered = True # Authenticate user if not hasattr(user, 'backend'): user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, user) # End of not authenticated assign.send(sender=ULoginUser, request=request, user=user, registered=registered, ulogin_user=ulogin, ulogin_data=response) return redirect(request.GET.get(REDIRECT_FIELD_NAME) or '/')