Пример #1
0
def signin(request):
    """
    signin page. It manage the legacy authentification (user/password) 
    and authentification with openid.

    url: /signin/
    
    template : authopenid/signin.htm
    """

    on_failure = signin_failure
    next = ''

    if request.GET.get('next') and is_valid_next_url(request.GET['next']):
        next = request.GET.get('next', '').strip()
    if not next or not is_valid_next_url(next):
        next = getattr(settings, 'OPENID_REDIRECT_NEXT', '/')

    form_signin = OpenidSigninForm(initial={'next': next})
    form_auth = OpenidAuthForm(initial={'next': next})

    if request.POST:
        if 'bsignin' in request.POST.keys():
            form_signin = OpenidSigninForm(request.POST)
            if form_signin.is_valid():
                next = form_signin.cleaned_data['next']
                if not next:
                    next = getattr(settings, 'OPENID_REDIRECT_NEXT', '/')

                sreg_req = sreg.SRegRequest(optional=['nickname', 'email'])
                redirect_to = "%s%s?%s" % (get_url_host(request),
                                           reverse('user_complete_signin'),
                                           urllib.urlencode({'next': next}))

                return ask_openid(request,
                                  form_signin.cleaned_data['openid_url'],
                                  redirect_to,
                                  on_failure=signin_failure,
                                  sreg_request=sreg_req)

        elif 'blogin' in request.POST.keys():
            # perform normal django authentification
            form_auth = OpenidAuthForm(request.POST)
            if form_auth.is_valid():
                user_ = form_auth.get_user()
                login(request, user_)

                next = form_auth.cleaned_data['next']
                if not next:
                    next = getattr(settings, 'OPENID_REDIRECT_NEXT', '/')
                return HttpResponseRedirect(next)

    return render('authopenid/signin.html', {
        'form1': form_auth,
        'form2': form_signin,
        'msg': request.GET.get('msg', ''),
        'sendpw_url': reverse('user_sendpw'),
    },
                  context_instance=RequestContext(request))
Пример #2
0
def signin_failure(request, message):
    """
    falure with openid signin. Go back to signin page.

    template : "authopenid/signin.html"
    """
    next = clean_next(request.GET.get('next'))
    form_signin = OpenidSigninForm(initial={'next': next})
    form_auth = OpenidAuthForm(initial={'next': next})

    return render('authopenid/signin.html', {
        'msg': message,
        'form1': form_auth,
        'form2': form_signin,
    }, context_instance=RequestContext(request))
Пример #3
0
def signin(request, newquestion=False, newanswer=False):
    """
    signin page. It manage the legacy authentification (user/password) 
    and authentification with openid.

    url: /signin/
    
    template : authopenid/signin.htm
    """
    request.encoding = 'UTF-8'
    on_failure = signin_failure
    next = clean_next(request.GET.get('next'))

    form_signin = OpenidSigninForm(initial={'next': next})
    form_auth = OpenidAuthForm(initial={'next': next})

    if request.POST:

        if 'bsignin' in request.POST.keys(
        ) or 'openid_username' in request.POST.keys():

            form_signin = OpenidSigninForm(request.POST)
            if form_signin.is_valid():
                next = clean_next(form_signin.cleaned_data.get('next'))
                sreg_req = sreg.SRegRequest(optional=['nickname', 'email'])
                redirect_to = "%s%s?%s" % (get_url_host(request),
                                           reverse('user_complete_signin'),
                                           urllib.urlencode({'next': next}))
                return ask_openid(request,
                                  form_signin.cleaned_data['openid_url'],
                                  redirect_to,
                                  on_failure=signin_failure,
                                  sreg_request=sreg_req)

        elif 'blogin' in request.POST.keys():
            # perform normal django authentification
            form_auth = OpenidAuthForm(request.POST)
            if form_auth.is_valid():
                user_ = form_auth.get_user()
                login(request, user_)
                next = clean_next(form_auth.cleaned_data.get('next'))
                return HttpResponseRedirect(next)

    question = None
    if newquestion == True:
        from forum.models import AnonymousQuestion as AQ
        session_key = request.session.session_key
        qlist = AQ.objects.filter(
            session_key=session_key).order_by('-added_at')
        if len(qlist) > 0:
            question = qlist[0]
    answer = None
    if newanswer == True:
        from forum.models import AnonymousAnswer as AA
        session_key = request.session.session_key
        alist = AA.objects.filter(
            session_key=session_key).order_by('-added_at')
        if len(alist) > 0:
            answer = alist[0]

    return render('authopenid/signin.html', {
        'question': question,
        'answer': answer,
        'form1': form_auth,
        'form2': form_signin,
        'msg': request.GET.get('msg', ''),
        'sendpw_url': reverse('user_sendpw'),
    },
                  context_instance=RequestContext(request))