コード例 #1
0
ファイル: views.py プロジェクト: simensma/sherpa
def signon_register(request):
    if request.method != 'POST' or not 'dntconnect' in request.session:
        raise PermissionDenied

    user, message = attempt_registration(request)
    if user is None:
        messages.error(request, message)
        return redirect("%s#registrering" % reverse('connect.views.signon_login'))
    else:
        # The user will be sent to registration after enrollment, so both will come
        # this way - check which one it is
        if 'innmelding.aktivitet' in request.session:
            add_signon_session_value(request, 'innmeldt')
        else:
            add_signon_session_value(request, 'registrert')
        return redirect('connect.views.signon_complete')
コード例 #2
0
ファイル: views.py プロジェクト: simensma/sherpa
def signon_register_nonmember(request):
    if request.method != 'POST' or not 'dntconnect' in request.session:
        raise PermissionDenied

    user, error_messages = attempt_registration_nonmember(request)

    if user is None:
        for message in error_messages:
            messages.error(request, message)

        request.session['user.registration_nonmember_attempt'] = {
            'name': request.POST['name'],
            'email': request.POST['email']
        }
        return redirect("%s#ikkemedlem" % (reverse('connect.views.signon_login')))
    else:
        add_signon_session_value(request, 'registrert')
        return redirect('connect.views.signon_complete')
コード例 #3
0
ファイル: views.py プロジェクト: simensma/sherpa
def signon_login_chosen_user(request):
    if not 'authenticated_users' in request.session or not 'dntconnect' in request.session:
        raise PermissionDenied

    if not 'user' in request.POST:
        del request.session['authenticated_users']
        return redirect('connect.views.signon_login')

    # Verify that the user authenticated for this user
    if not int(request.POST['user']) in request.session['authenticated_users']:
        del request.session['authenticated_users']
        return redirect('connect.views.signon_login')

    # All is swell, log the user in
    user = User.get_users(include_pending=True).get(id=request.POST['user'], is_inactive=False)
    user = authenticate(user=user)
    log_user_in(request, user)
    add_signon_session_value(request, 'logget_inn')
    del request.session['authenticated_users']
    return redirect('connect.views.signon_complete')
コード例 #4
0
ファイル: views.py プロジェクト: Turistforeningen/sherpa
def signon_login(request):
    if not 'dntconnect' in request.session:
        # Use a friendlier error message here?
        raise PermissionDenied

    if request.user.is_authenticated():
        # Shouldn't happen, but handle it just in case.
        add_signon_session_value(request, 'logget_inn')
        return redirect('connect:signon_complete')
    else:
        context = {
            'user_password_length': settings.USER_PASSWORD_LENGTH,
            'countries': FocusCountry.get_sorted(),
        }
        if 'registreringsnokkel' in request.GET:
            try:
                user = User.get_users(include_pending=True).get(pending_registration_key=request.GET['registreringsnokkel'])
                context['prefilled_user'] = user
            except User.DoesNotExist:
                pass

        if request.method == 'GET':
            return render(request, 'central/connect/%s/signon.html' % request.session['dntconnect']['client_id'], context)
        elif request.method == 'POST':
            matches, message = attempt_login(request)

            if len(matches) == 1:
                add_signon_session_value(request, 'logget_inn')
                return redirect('connect:signon_complete')

            elif len(matches) > 1:
                # Multiple matches, offer a choice between all matches
                request.session['authenticated_users'] = [u.id for u in matches]
                return redirect('connect:signon_choose_authenticated_user')

            else:
                messages.error(request, message)
                context['email'] = request.POST['email']
                return render(request, 'central/connect/%s/signon.html' % request.session['dntconnect']['client_id'], context)
        else:
            raise PermissionDenied
コード例 #5
0
ファイル: views.py プロジェクト: Turistforeningen/sherpa
def signon_register(request):
    if request.method != 'POST' or not 'dntconnect' in request.session:
        raise PermissionDenied

    if 'memberid' in request.POST:
        user, message = attempt_registration(request)
        error_messages = [message]
    else:
        user, error_messages = attempt_registration_nonmember(request)
    if user is None:
        return HttpResponse(json.dumps({
            'messages': error_messages,
        }))
    else:
        # The user will be sent to registration after enrollment, so both will come
        # this way - check which one it is
        if 'innmelding.aktivitet' in request.session:
            add_signon_session_value(request, 'innmeldt')
        else:
            add_signon_session_value(request, 'registrert')
        return HttpResponse(json.dumps({
            'redirect_url': reverse('connect:signon_complete'),
        }))
コード例 #6
0
ファイル: views.py プロジェクト: simensma/sherpa
def signon_cancel(request):
    if not 'dntconnect' in request.session:
        raise PermissionDenied

    add_signon_session_value(request, 'avbrutt')
    return redirect('connect.views.signon_complete')