예제 #1
0
    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 '/')
예제 #2
0
    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 '/')
예제 #3
0
파일: views.py 프로젝트: yigor/i-help-u
    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 '/')
예제 #4
0
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 '/')