Ejemplo n.º 1
0
def verify(request):

    try:
        auth = authenticate(request, settings.SAML_1['URL'])
    except SamlException as e:
        ctx = {'e': e}
        return render_to_response('registration/saml_error.html', ctx)

    if UserProfile.objects.filter(verified_ssn=auth['ssn']).count() > 0:
        taken_user = UserProfile.objects.select_related('user').get(
            verified_ssn=auth['ssn']).user
        ctx = {
            'auth': auth,
            'taken_user': taken_user,
        }

        auth_logout(request)

        return render_to_response('registration/verification_duplicate.html',
                                  ctx)

    profile = request.user.userprofile  # It shall exist at this point
    profile.verified_ssn = auth['ssn']
    profile.verified_name = auth['name'].encode('utf8')
    profile.verified_token = request.GET['token']
    profile.verified_timing = datetime.now()
    profile.save()

    if hasattr(settings, 'ICEPIRATE'):  # Is IcePirate support enabled?
        configure_external_member_db(request.user, create_if_missing=True)

    return HttpResponseRedirect('/')
Ejemplo n.º 2
0
def verify(request):

    try:
        auth = authenticate(request, settings.SAML_1['URL'])
    except SamlException as e:
        ctx = {'e': e}
        return render_to_response('registration/saml_error.html', ctx)

    if UserProfile.objects.filter(verified_ssn=auth['ssn']).count() > 0:
        taken_user = UserProfile.objects.select_related('user').get(verified_ssn=auth['ssn']).user
        ctx = {
            'auth': auth,
            'taken_user': taken_user,
        }

        auth_logout(request)

        return render_to_response('registration/verification_duplicate.html', ctx)

    profile = request.user.userprofile # It shall exist at this point
    profile.verified_ssn = auth['ssn']
    profile.verified_name = auth['name'].encode('utf8')
    profile.verified_token = request.GET['token']
    profile.verified_timing = datetime.now()
    profile.save()

    if hasattr(settings, 'ICEPIRATE'): # Is IcePirate support enabled?
        configure_external_member_db(request.user, create_if_missing=True)

    return HttpResponseRedirect('/')
Ejemplo n.º 3
0
def verify(request):

    try:
        auth = authenticate(request, settings.SAML_1['URL'])
    except SamlException as e:
        ctx = {'e': e}
        return render(request, 'registration/saml_error.html', ctx)
    except ParseError:
        logout(request)
        return redirect(reverse('auth_login'))

    # Make sure that the user is, in fact, human.
    if is_ssn_human_or_institution(auth['ssn']) != 'human':
        ctx = {
            'ssn': auth['ssn'],
            'name': auth['name'].encode('utf8'),
        }
        return render(request, 'registration/verification_invalid_entity.html',
                      ctx)

    # Make sure that user has reached the minimum required age, if applicable.
    if hasattr(settings, 'AGE_LIMIT') and settings.AGE_LIMIT > 0:
        age = calculate_age_from_ssn(auth['ssn'])
        if age < settings.AGE_LIMIT:
            logout(request)
            ctx = {
                'age': age,
                'age_limit': settings.AGE_LIMIT,
            }
            return render(request, 'registration/verification_age_limit.html',
                          ctx)

    if UserProfile.objects.filter(verified_ssn=auth['ssn']).exists():
        taken_user = UserProfile.objects.select_related('user').get(
            verified_ssn=auth['ssn']).user
        ctx = {
            'auth': auth,
            'taken_user': taken_user,
        }

        logout(request)

        return render(request, 'registration/verification_duplicate.html', ctx)

    profile = request.user.userprofile  # It shall exist at this point
    profile.verified_ssn = auth['ssn']
    profile.verified_name = auth['name'].encode('utf8')
    profile.verified_token = request.GET['token']
    profile.verified_timing = datetime.now()
    profile.save()

    user_verified.send(sender=request.user.__class__,
                       user=request.user,
                       request=request)

    return HttpResponseRedirect('/')