Example #1
0
def reverify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {
            'experimental_forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
            'experimental_forceAuthentication': 'true',
            'experimental_allowUnverified': 'true'
        }

        assertion = form.cleaned_data['assertion']
        log.info('Re-verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s' % (url, audience, extra_params))
        result = verify_assertion(assertion, audience, extra_params)

        log.info('Reverify got result: %s' % result)
        if result:
            email = result.get('unverified-email', result.get('email'))
            store_mkt_permissions(request, email, assertion, audience)
            logged_user = request.session.get('uuid')
            reverified_user = get_uuid(email)
            if logged_user and logged_user != reverified_user:
                log.error('User %r tried to reverify as '
                          'new email: %s' % (logged_user, email))
                return http.HttpResponseBadRequest()

            request.session['was_reverified'] = True
            return {'user_hash': reverified_user}

        log.error('Persona assertion failed.')

    request.session.clear()
    return http.HttpResponseBadRequest()
Example #2
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {'forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
                        'allowUnverified': 'true'}
        assertion = form.cleaned_data['assertion']

        log.info('verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s, assertion: %s' % (url, audience,
                                                      extra_params, assertion))
        result = verify_assertion(assertion, audience, extra_params)
        if result:
            log.info('Persona assertion ok: %s' % result)
            email = result.get('unverified-email', result.get('email'))
            user_hash = set_user(request, email)
            return {'has_pin': request.session.get('uuid_has_pin'),
                    'pin_create': reverse('pin.create'),
                    'user_hash': user_hash}

        log.error('Persona assertion failed.')

    request.session.clear()
    return http.HttpResponseBadRequest()
Example #3
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {
            'experimental_forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
            'experimental_allowUnverified': 'true'
        }
        assertion = form.cleaned_data['assertion']
        log.info('verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s, assertion: %s' %
                 (url, audience, extra_params, assertion))
        result = verify_assertion(assertion, audience, extra_params)
        if result:
            log.info('Persona assertion ok: %s' % result)
            email = result.get('unverified-email', result.get('email'))
            store_mkt_permissions(request, email, assertion, audience)
            user_uuid = set_user(request, email)

            redirect_url = check_pin_status(request)

            return {
                'needs_redirect': redirect_url is not None,
                'redirect_url': redirect_url,
                'user_hash': user_uuid
            }

        log.error('Persona assertion failed.')

    request.session.flush()
    return http.HttpResponseBadRequest()
Example #4
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {'experimental_forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
                        'experimental_allowUnverified': 'true'}
        assertion = form.cleaned_data['assertion']

        log.info('verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s, assertion: %s' % (url, audience,
                                                      extra_params, assertion))
        result = verify_assertion(assertion, audience, extra_params)
        if result:
            log.info('Persona assertion ok: %s' % result)
            email = result.get('unverified-email', result.get('email'))
            user_hash = set_user(request, email)
            redirect_url = check_pin_status(request)
            return {
                'needs_redirect': redirect_url is not None,
                'redirect_url': redirect_url,
                'user_hash': user_hash
            }

        log.error('Persona assertion failed.')

    request.session.flush()
    return http.HttpResponseBadRequest()
Example #5
0
def reverify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {
            "experimental_forceIssuer": settings.BROWSERID_UNVERIFIED_ISSUER,
            "experimental_forceAuthentication": "true",
            "experimental_allowUnverified": "true",
        }

        assertion = form.cleaned_data["assertion"]
        log.info(
            "Re-verifying Persona assertion. url: %s, audience: %s, " "extra_params: %s" % (url, audience, extra_params)
        )
        result = verify_assertion(assertion, audience, extra_params)

        log.info("Reverify got result: %s" % result)
        if result:
            email = result.get("unverified-email", result.get("email"))
            store_mkt_permissions(request, email, assertion, audience)
            logged_user = request.session.get("uuid")
            reverified_user = get_uuid(email)
            if logged_user and logged_user != reverified_user:
                log.error("User %r tried to reverify as " "new email: %s" % (logged_user, email))
                return http.HttpResponseBadRequest()

            request.session["was_reverified"] = True
            return {"user_hash": reverified_user}

        log.error("Persona assertion failed.")

    request.session.clear()
    return http.HttpResponseBadRequest()
Example #6
0
def reverify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {
            'experimental_forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
            'experimental_forceAuthentication': 'true',
            'experimental_allowUnverified': 'true'
        }

        assertion = form.cleaned_data['assertion']
        log.info('Re-verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s' % (url, audience, extra_params))
        result = verify_assertion(assertion, audience, extra_params)

        log.info('Reverify got result: %s' % result)
        if result:
            email = result.get('unverified-email', result.get('email'))
            store_mkt_permissions(request, email, assertion, audience)
            logged_user = request.session.get('uuid')
            reverified_user = get_uuid(email)
            if logged_user and logged_user != reverified_user:
                log.error('User %r tried to reverify as '
                          'new email: %s' % (logged_user, email))
                return http.HttpResponseBadRequest()

            request.session['was_reverified'] = True
            return {'user_hash': reverified_user}

        log.error('Persona assertion failed.')

    request.session.clear()
    return http.HttpResponseBadRequest()
Example #7
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        log.info("verifying assertion")
        result = verify_assertion(form.cleaned_data["assertion"], get_audience(request))
        if result:
            log.info("assertion ok: %s" % result)
            return http.HttpResponse("ok")

    return http.HttpResponseBadRequest()
Example #8
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        log.info('verifying assertion')
        result = verify_assertion(form.cleaned_data['assertion'],
                                  get_audience(request))
        if result:
            log.info('assertion ok: %s' % result)
            set_user(request, result['email'])
            return {'has_pin': request.session['uuid_has_pin'],
                    'pin_create': reverse('pin.create')}

    request.session.clear()
    return http.HttpResponseBadRequest()
Example #9
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {
            'experimental_forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
            'experimental_allowUnverified': 'true'
        }
        assertion = form.cleaned_data['assertion']

        log.info('verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s, assertion: %s' % (url, audience,
                                                      extra_params, assertion))
        result = verify_assertion(assertion, audience, extra_params)
        if result:
            log.info('Persona assertion ok: %s' % result)
            email = result.get('unverified-email', result.get('email'))
            store_mkt_permissions(request, email, assertion, audience)
            user_uuid = set_user(request, email)

            redirect_url = check_pin_status(request)

            # Before we verify the user's PIN let's save some
            # time and get the transaction configured via Bango in the
            # background.
            log.info('configuring transaction {0} from auth'
                     .format(request.session.get('trans_id')))
            if not pay_tasks.configure_transaction(request):
                log.error('Configuring transaction failed.')

            return {
                'needs_redirect': redirect_url is not None,
                'redirect_url': redirect_url,
                'user_hash': user_uuid
            }

        log.error('Persona assertion failed.')

    request.session.flush()
    return http.HttpResponseBadRequest()
Example #10
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {
            'experimental_forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
            'experimental_allowUnverified': 'true'
        }
        assertion = form.cleaned_data['assertion']

        log.info('verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s, assertion: %s' %
                 (url, audience, extra_params, assertion))
        result = verify_assertion(assertion, audience, extra_params)
        if result:
            log.info('Persona assertion ok: %s' % result)
            email = result.get('unverified-email', result.get('email'))
            store_mkt_permissions(request, email, assertion, audience)
            user_uuid = set_user(request, email)

            redirect_url = check_pin_status(request)

            # Before we verify the user's PIN let's save some
            # time and get the transaction configured via Bango in the
            # background.
            log.info('configuring transaction {0} from auth'.format(
                request.session.get('trans_id')))
            pay_tasks.configure_transaction(request)

            return {
                'needs_redirect': redirect_url is not None,
                'redirect_url': redirect_url,
                'user_hash': user_uuid
            }

        log.error('Persona assertion failed.')

    request.session.flush()
    return http.HttpResponseBadRequest()
Example #11
0
def reverify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        # TODO: when we want to require a forced-auth login across the
        # entire site then how do we do it?
        # See bug 836060.
        extra_params = {
            'experimental_forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
            # TODO: how do we make sure this is a proper forced
            #       auth assertion?
            # This can also be addressed in bug 836060
            'experimental_forceAuthentication': 'true',
            'experimental_allowUnverified': 'true'
        }

        log.info('Re-verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s' % (url, audience, extra_params))
        result = verify_assertion(form.cleaned_data['assertion'], audience,
                                  extra_params)

        log.info('Reverify got result: %s')
        if result:
            logged_user = request.session.get('uuid')
            email = result.get('unverified-email', result.get('email'))
            reverified_user = get_uuid(email)
            if logged_user and logged_user != reverified_user:
                # TODO: Should we try to support this?
                raise ValueError('A user tried to reverify herself with a '
                                 'new email: %s' % email)

            return {'user_hash': reverified_user}

        log.error('Persona assertion failed.')

    request.session.clear()
    return http.HttpResponseBadRequest()
Example #12
0
def reverify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        # TODO: when we want to require a forced-auth login across the
        # entire site then how do we do it?
        # See bug 836060.
        extra_params = {'forceIssuer': settings.BROWSERID_UNVERIFIED_ISSUER,
                        # TODO: how do we make sure this is a proper forced
                        #       auth assertion?
                        # This can also be addressed in bug 836060
                        'forceAuthentication': 'true',
                        'allowUnverified': 'true'}

        log.info('Re-verifying Persona assertion. url: %s, audience: %s, '
                 'extra_params: %s' % (url, audience, extra_params))
        result = verify_assertion(form.cleaned_data['assertion'], audience,
                                  extra_params)

        log.info('Reverify got result: %s')
        if result:
            logged_user = request.session.get('uuid')
            email = result.get('unverified-email', result.get('email'))
            reverified_user = get_uuid(email)
            if logged_user and logged_user != reverified_user:
                # TODO: Should we try to support this?
                raise ValueError('A user tried to reverify herself with a '
                                 'new email: %s' % email)

            return {'user_hash': reverified_user}

        log.error('Persona assertion failed.')

    request.session.clear()
    return http.HttpResponseBadRequest()
Example #13
0
def verify(request):
    form = BrowserIDForm(data=request.POST)
    if form.is_valid():
        url = settings.BROWSERID_VERIFICATION_URL
        audience = get_audience(request)
        extra_params = {
            "experimental_forceIssuer": settings.BROWSERID_UNVERIFIED_ISSUER,
            "experimental_allowUnverified": "true",
        }
        assertion = form.cleaned_data["assertion"]
        log.info(
            "verifying Persona assertion. url: %s, audience: %s, "
            "extra_params: %s, assertion: %s" % (url, audience, extra_params, assertion)
        )
        result = verify_assertion(assertion, audience, extra_params)
        if result:
            log.info("Persona assertion ok: %s" % result)
            email = result.get("unverified-email", result.get("email"))
            store_mkt_permissions(request, email, assertion, audience)
            user_uuid = set_user(request, email)

            redirect_url = check_pin_status(request)

            # Before we verify the user's PIN let's save some
            # time and get the transaction configured via Bango in the
            # background.
            log.info("configuring transaction {0} from auth".format(request.session.get("trans_id")))
            if not pay_tasks.configure_transaction(request):
                log.error("Configuring transaction failed.")

            return {"needs_redirect": redirect_url is not None, "redirect_url": redirect_url, "user_hash": user_uuid}

        log.error("Persona assertion failed.")

    request.session.flush()
    return http.HttpResponseBadRequest()