Example #1
0
def return_callback(request):
    token = request.POST.get('token', None)
    if token is None:
        return http.HttpResponseBadRequest()

    f = urlopen('http://loginza.ru/api/authinfo?token=%s' % token)
    result = f.read()
    f.close()

    data = json.loads(result)

    if 'error_type' in data:
        signals.error.send(request, error=LoginzaError(data))
        return redirect(_return_path(request))

    identity = models.Identity.objects.from_loginza_data(data)
    user_map = models.UserMap.objects.for_identity(identity, request)
    response = redirect(_return_path(request))
    if request.user.is_anonymous():
        user = auth.authenticate(user_map=user_map)

        if user is not None: # вот это решило проблему
            if user.is_active:
                auth.login(request, user)
        results = signals.authenticated.send(request, user=user, identity=identity)
        for callback, result in results:
            if isinstance(result, http.HttpResponse):
                response = result
                break

    return response
Example #2
0
def return_callback(request):
    token = request.POST.get('token', None)
    if token is None:
        return http.HttpResponseBadRequest()

    params = {'token': token}
    if settings.WIDGET_ID is not None and settings.API_SIGNATURE is not None:
        sig = md5(token + settings.API_SIGNATURE).hexdigest()
        params.update(id=settings.WIDGET_ID, sig=sig)

    f = urlopen('http://loginza.ru/api/authinfo?%s' % urlencode(params))
    result = f.read()
    f.close()

    data = json.loads(result)

    if 'error_type' in data:
        signals.error.send(request, error=LoginzaError(data))
        return redirect(_return_path(request))

    identity = models.Identity.objects.from_loginza_data(data)
    user_map = models.UserMap.objects.for_identity(identity, request)
    response = redirect(_return_path(request))
    if request.user.is_anonymous():
        user = auth.authenticate(user_map=user_map)
        results = signals.authenticated.send(request,
                                             user=user,
                                             identity=identity)
        for callback, result in results:
            if isinstance(result, http.HttpResponse):
                response = result
                break

    return response
Example #3
0
def return_callback(request):
    token = request.POST.get('token', None)
    if token is None:
        return http.HttpResponseBadRequest()

    params = {'token': token}
    if settings.WIDGET_ID is not None and settings.API_SIGNATURE is not None:
        sig = md5(token + settings.API_SIGNATURE).hexdigest()
        params.update(id=settings.WIDGET_ID, sig=sig)

    f = urlopen('http://loginza.ru/api/authinfo?%s' % urlencode(params))
    result = f.read()
    f.close()

    data = json.loads(result)

    if 'error_type' in data:
        signals.error.send(request, error=LoginzaError(data))
        return redirect(_return_path(request))

    identity = models.Identity.objects.from_loginza_data(data)
    user_map = models.UserMap.objects.for_identity(identity, request)
    response = redirect(_return_path(request))
    if request.user.is_anonymous():
        user = auth.authenticate(user_map=user_map)
        results = signals.authenticated.send(request, user=user, identity=identity)
        for callback, result in results:
            if isinstance(result, http.HttpResponse):
                response = result
                break

    return response
Example #4
0
    def render(self, context):
        kwargs = dict([(smart_str(k, 'ascii'), v.resolve(context)) for k, v in self.kwargs.items()])
        if 'lang' not in kwargs:
            kwargs['lang'] = settings.DEFAULT_LANGUAGE

        # save current path, so if user will be logged with loginza
        # he will be redirected back to the page he for login
        _return_path(context['request'], context['request'].path)

        html = self.html_template(kwargs, self.caption)
        if self.asvar:
            context[self.asvar] = html
            html = ''

        return html
Example #5
0
def complete_registration(request):
    if request.user.is_authenticated():
        return http.HttpResponseForbidden(u"Вы попали сюда по ошибке")
    try:
        identity_id = request.session.get("users_complete_reg_id", None)
        user_map = models.UserMap.objects.get(identity__id=identity_id)
    except models.UserMap.DoesNotExist:
        return http.HttpResponseForbidden(u"Вы попали сюда по ошибке")
    if request.method == "POST":
        form = CompleteReg(user_map.user.id, request.POST)
        if form.is_valid():
            user_map.user.username = form.cleaned_data["username"]
            user_map.user.email = form.cleaned_data["email"]
            user_map.user.save()

            user_map.verified = True
            user_map.save()

            user = auth.authenticate(user_map=user_map)
            auth.login(request, user)

            messages.info(request, u"Добро пожаловать!")
            del request.session["users_complete_reg_id"]
            return redirect(_return_path(request))
    else:
        form = CompleteReg(user_map.user.id, initial={"username": user_map.user.username, "email": user_map.user.email})

    return form
Example #6
0
def complete_registration(request):
    if request.user.is_authenticated():
        return http.HttpResponseForbidden(u'Вы попали сюда по ошибке')
    try:
        identity_id = request.session.get('users_complete_reg_id', None)
        user_map = models.UserMap.objects.get(identity__id=identity_id)
    except models.UserMap.DoesNotExist:
        return http.HttpResponseForbidden(u'Вы попали сюда по ошибке')
    if request.method == 'POST':
        form = forms.CompleteReg(user_map.user.id, request.POST)
        if form.is_valid():
            user_map.user.username = form.cleaned_data['username']
            user_map.user.email = form.cleaned_data['email']
            user_map.user.save()

            user_map.verified = True
            user_map.save()

            user = auth.authenticate(user_map=user_map)
            auth.login(request, user)

            messages.info(request, u'Welcome!')
            del request.session['users_complete_reg_id']
            return redirect(_return_path(request))
    else:
        form = forms.CompleteReg(user_map.user.id, initial={
            'username': user_map.user.username, 'email': user_map.user.email,
            })

    return render_to_response('users/complete_reg.html',
                              {'form': form},
                              context_instance=RequestContext(request),
                              )
Example #7
0
def loginza_register(request):
    try:
        identity_id = request.session.get('users_complete_reg_id', None)
        user_map = UserMap.objects.select_related().get(identity__id=identity_id)
    except UserMap.DoesNotExist:
        return redirect('login')

    user_data = json.loads(user_map.identity.data)

    if request.method == 'POST':
        form = LoginzaRegistrationForm(request.POST, user_map=user_map)
        if form.is_valid():
            user = form.save()

            # check if email if provided by loginza - no need to verify it then
            if user_data.get('email'): # no need to confirm email
                user = auth.authenticate(username=user.username, password=form.cleaned_data.get('password1',''))
                assert user and user.is_authenticated()
                auth.login(request, user)

                #messages.info(request, u'Добро пожаловать!')
                del request.session['users_complete_reg_id']
                return redirect(_return_path(request))
            else:
                return redirect('registration_completed')
    else:
        form = LoginzaRegistrationForm(user_map=user_map, initial={'email': user_map.user.email})

    if 'name' in user_data:
        form.initial['first_name'] = user_data['name'].get('first_name', '')
        form.initial['last_name'] = user_data['name'].get('last_name', '')

    return render_to_response('registration/loginza_register.html', {'form': form},
            context_instance=RequestContext(request))
Example #8
0
    def render(self, context):
        kwargs = dict([(smart_str(k, 'ascii'), v.resolve(context))
                       for k, v in self.kwargs.items()])
        if 'lang' not in kwargs:
            kwargs['lang'] = settings.DEFAULT_LANGUAGE

        # save current path, so if user will be logged with loginza
        # he will be redirected back to the page he for login
        _return_path(context['request'], context['request'].path)

        html = self.html_template(kwargs, self.caption)
        if self.asvar:
            context[self.asvar] = html
            html = ''

        return html
Example #9
0
def complete_registration(request):
    if request.user.is_authenticated():
        return HttpResponseForbidden(
            u'Вы попали сюда по ошибке')  # TODO: redirect

    try:
        identity_id = request.session.get('users_complete_reg_id', None)
        user_map = UserMap.objects.select_related().get(
            identity__id=identity_id)
    except UserMap.DoesNotExist:
        return HttpResponseForbidden(u'Вы попали сюда по ошибке')

    if request.method == 'POST':
        form = CompleteRegistrationForm(user_map.user.id, request.POST)
        if form.is_valid():
            user_map.user.username = form.cleaned_data['username']
            user_map.user.email = form.cleaned_data['email']
            user_map.user.first_name = form.cleaned_data['first_name']
            user_map.user.last_name = form.cleaned_data['last_name']
            user_map.user.set_password(form.cleaned_data["password1"])
            user_map.user.save()

            user_map.verified = True
            user_map.save()

            user = auth.authenticate(user_map=user_map)
            auth.login(request, user)

            messages.info(request, u'Добро пожаловать!')
            del request.session['users_complete_reg_id']
            return redirect(_return_path(request))
    else:
        form = CompleteRegistrationForm(user_map.user.id,
                                        initial={
                                            'username': user_map.user.username,
                                            'email': user_map.user.email,
                                        })

    user_map = UserMap.objects.get(
        user=user_map.user)  # TODO: what if there are several user maps?
    data = json.loads(user_map.identity.data)
    form.initial['first_name'] = data['name']['first_name']
    form.initial['last_name'] = data['name']['last_name']

    return render_to_response('complete_registration.html', {'form': form},
                              context_instance=RequestContext(request))
Example #10
0
def loginza_register(request):
    if request.user.is_authenticated():
        return redirect('my_profile')

    try:
        identity_id = request.session.get('users_complete_reg_id', None)
        user_map = UserMap.objects.select_related().get(identity__id=identity_id)
    except UserMap.DoesNotExist:
        return redirect('main')

    if request.method == 'POST':
        form = CompleteRegistrationForm(user_map.user.id, request.POST)
        if form.is_valid():
            user_map.user.username = form.cleaned_data['username']
            user_map.user.email = form.cleaned_data['email']
            user_map.user.first_name = form.cleaned_data['first_name']
            user_map.user.last_name = form.cleaned_data['last_name']
            user_map.user.set_password(form.cleaned_data["password1"])
            user_map.user.save()

            user_map.verified = True
            user_map.save()

            #user = auth.authenticate(user_map=user_map)
            #auth.login(request, user)

            #messages.info(request, u'Добро пожаловать!')
            del request.session['users_complete_reg_id']
            return redirect(_return_path(request))
    else:
        form = CompleteRegistrationForm(user_map.user.id, initial={
                'username': user_map.user.username,
                'email': user_map.user.email,
        })

    user_map = UserMap.objects.get(user=user_map.user) # TODO: what if there are several user maps?
    data = json.loads(user_map.identity.data)
    form.initial['first_name'] = data['name']['first_name']
    form.initial['last_name'] = data['name']['last_name']

    return render_to_response('registration/loginza_register.html', {'form': form},
            context_instance=RequestContext(request))