예제 #1
0
def reset_confirm(request):
    form = forms.ConfirmPinForm()
    if request.method == 'POST':
        form = forms.ResetConfirmPinForm(uuid=get_user(request),
                                         data=request.POST)
        if form.is_valid():
            # Clear reverification state since this PIN reset is finished.
            request.session['was_reverified'] = False
            messages.success(request, _('Pin reset'))
            # Copy pin into place is handled in solitude, webpay
            # merely asked solitude to verify the new pin which
            # happens in validation of the form.
            return http.HttpResponseRedirect(get_wait_url(request))
    form.reset_flow = True
    return render(
        request, 'pin/pin_form.html', {
            'form': form,
            'title': _('Confirm Pin'),
            'action': reverse('pin.reset_confirm'),
            'pin_form_tracking': {
                'pin_error_codes': form.pin_error_codes,
            },
            'track_cancel': {
                'action': 'pin cancel',
                'label': 'Reset Pin page',
            }
        })
예제 #2
0
 def test_recently_entered_pin_redirect(self, update_session, get_price,
                                        get_active_product):
     self.set_secret(get_active_product)
     self.session['uuid'] = 'something'
     self.session['last_pin_success'] = datetime.now()
     self.save_session()
     payload = self.request(iss=self.key, app_secret=self.secret)
     res = self.get(payload)
     eq_(res.status_code, 302)
     assert res['Location'].endswith('?next={0}'.format(
         get_wait_url(mock.Mock(session={})))), res['Location']
예제 #3
0
 def test_recently_entered_pin_redirect(self, update_session, get_price,
                                        get_active_product):
     self.set_secret(get_active_product)
     self.session['uuid'] = 'something'
     self.session['last_pin_success'] = datetime.now()
     self.save_session()
     payload = self.request(iss=self.key, app_secret=self.secret)
     res = self.get(payload)
     eq_(res.status_code, 302)
     assert res['Location'].endswith(
         '?next={0}'.format(get_wait_url(mock.Mock(session={})))
     ), res['Location']
예제 #4
0
def confirm(request):
    form = forms.ConfirmPinForm()
    if request.method == 'POST':
        form = forms.ConfirmPinForm(uuid=get_user(request), data=request.POST)
        if form.is_valid():
            set_user_has_confirmed_pin(request, True)
            return http.HttpResponseRedirect(get_wait_url(request))
    form.no_pin = True
    return render(request, 'pin/pin_form.html', {'form': form,
                  'title': _('Confirm Pin'),
                  'action': reverse('pin.confirm'),
                  'pin_form_tracking' : {
                    'pin_error_codes': form.pin_error_codes,
                  },
                  'track_cancel': {
                      'action': 'pin cancel',
                      'label': 'Confirm Pin Page',
                  }})
예제 #5
0
def verify(request):
    form = forms.VerifyPinForm()

    if request.method == 'POST':
        form = forms.VerifyPinForm(uuid=get_user(request), data=request.POST)
        if form.is_valid():
            request.session['last_pin_success'] = datetime.now()
            return http.HttpResponseRedirect(get_wait_url(request))
        elif form.pin_is_locked:
            request.session['uuid_pin_is_locked'] = True
            return http.HttpResponseRedirect(reverse('pin.is_locked'))
    return render(request, 'pin/pin_form.html', {'form': form,
                  'title': _('Enter Pin'),
                  'action': reverse('pin.verify'),
                  'pin_form_tracking' : {
                    'pin_error_codes': form.pin_error_codes,
                  },
                  'track_cancel': {
                      'action': 'pin cancel',
                      'label': 'Verify Pin Page',
                  }})
예제 #6
0
def confirm(request):
    form = forms.ConfirmPinForm()
    if request.method == 'POST':
        form = forms.ConfirmPinForm(uuid=get_user(request), data=request.POST)
        if form.is_valid():
            set_user_has_confirmed_pin(request, True)
            return http.HttpResponseRedirect(get_wait_url(request))
    form.no_pin = True
    return render(
        request, 'pin/pin_form.html', {
            'form': form,
            'title': _('Confirm Pin'),
            'action': reverse('pin.confirm'),
            'pin_form_tracking': {
                'pin_error_codes': form.pin_error_codes,
            },
            'track_cancel': {
                'action': 'pin cancel',
                'label': 'Confirm Pin Page',
            }
        })
예제 #7
0
def check_pin_status(request):
    if request.session.get('uuid_pin_is_locked'):
        return reverse('pin.is_locked')

    if request.session.get('uuid_pin_was_locked'):
        return reverse('pin.was_locked')

    last_success = request.session.get('last_pin_success')
    if (last_success and ((datetime.now() - last_success).seconds <
                          settings.PIN_UNLOCK_LENGTH)):
        return get_wait_url(request)

    if request.session.get('uuid_has_pin'):
        if request.session.get('uuid_has_confirmed_pin'):
            return None
        else:
            try:
                client.change_pin(request.session['uuid'], None)
            except ResourceModified:
                return system_error(request, code=msg.RESOURCE_MODIFIED)
            request.session['uuid_has_pin'] = False
    return reverse('pin.create')
예제 #8
0
def check_pin_status(request):
    if request.session.get('uuid_pin_is_locked'):
        return reverse('pin.is_locked')

    if request.session.get('uuid_pin_was_locked'):
        return reverse('pin.was_locked')

    last_success = request.session.get('last_pin_success')
    if (last_success and (
        (datetime.now() - last_success).seconds < settings.PIN_UNLOCK_LENGTH)):
        return get_wait_url(request)

    if request.session.get('uuid_has_pin'):
        if request.session.get('uuid_has_confirmed_pin'):
            return None
        else:
            try:
                client.change_pin(request.session['uuid'], None)
            except ResourceModified:
                return system_error(request, code=msg.RESOURCE_MODIFIED)
            request.session['uuid_has_pin'] = False
    return reverse('pin.create')
예제 #9
0
def reset_confirm(request):
    form = forms.ConfirmPinForm()
    if request.method == 'POST':
        form = forms.ResetConfirmPinForm(uuid=get_user(request),
                                         data=request.POST)
        if form.is_valid():
            # Clear reverification state since this PIN reset is finished.
            request.session['was_reverified'] = False
            messages.success(request, _('Pin reset'))
            # Copy pin into place is handled in solitude, webpay
            # merely asked solitude to verify the new pin which
            # happens in validation of the form.
            return http.HttpResponseRedirect(get_wait_url(request))
    form.reset_flow = True
    return render(request, 'pin/pin_form.html', {'form': form,
                  'title': _('Confirm Pin'),
                  'action': reverse('pin.reset_confirm'),
                  'pin_form_tracking' : {
                      'pin_error_codes': form.pin_error_codes,
                  },
                  'track_cancel': {
                      'action': 'pin cancel',
                      'label': 'Reset Pin page',
                  }})
예제 #10
0
def verify(request):
    form = forms.VerifyPinForm()

    if request.method == 'POST':
        form = forms.VerifyPinForm(uuid=get_user(request), data=request.POST)
        if form.is_valid():
            request.session['last_pin_success'] = datetime.now()
            return http.HttpResponseRedirect(get_wait_url(request))
        elif form.pin_is_locked:
            request.session['uuid_pin_is_locked'] = True
            return http.HttpResponseRedirect(reverse('pin.is_locked'))
    return render(
        request, 'pin/pin_form.html', {
            'form': form,
            'title': _('Enter Pin'),
            'action': reverse('pin.verify'),
            'pin_form_tracking': {
                'pin_error_codes': form.pin_error_codes,
            },
            'track_cancel': {
                'action': 'pin cancel',
                'label': 'Verify Pin Page',
            }
        })
예제 #11
0
 def test_good_pin(self):
     res = self.client.post(self.url, data={'pin': '1234'})
     assert res['Location'].endswith(get_wait_url(Mock(session={})))
     # Make sure the reverification flag was cleared out.
     eq_(res.client.session['was_reverified'], False)
예제 #12
0
 def test_good_pin(self, set_user_has_confirmed_pin):
     res = self.client.post(self.url, data={'pin': '1234'})
     set_user_has_confirmed_pin.assert_called_with(ANY, True)
     assert res['Location'].endswith(get_wait_url(Mock(session={})))
예제 #13
0
 def test_good_pin(self):
     res = self.client.post(self.url, data={'pin': '1234'})
     assert res['Location'].endswith(get_wait_url(Mock(session={})))
예제 #14
0
파일: test_views.py 프로젝트: lissyx/webpay
 def test_good_pin(self):
     res = self.client.post(self.url, data={'pin': '1234'})
     assert res['Location'].endswith(get_wait_url(Mock(session={})))
예제 #15
0
파일: test_views.py 프로젝트: lissyx/webpay
 def test_good_pin(self, set_user_has_confirmed_pin):
     res = self.client.post(self.url, data={'pin': '1234'})
     set_user_has_confirmed_pin.assert_called_with(ANY, True)
     assert res['Location'].endswith(get_wait_url(Mock(session={})))
예제 #16
0
 def test_pin_recently_entered_successfully(self):
     self.request.session["last_pin_success"] = datetime.now()
     eq_(utils.check_pin_status(self.request), get_wait_url(mock.Mock(session={})))
예제 #17
0
파일: test_views.py 프로젝트: lissyx/webpay
 def test_good_pin(self):
     res = self.client.post(self.url, data={'pin': '1234'})
     assert res['Location'].endswith(get_wait_url(Mock(session={})))
     # Make sure the reverification flag was cleared out.
     eq_(res.client.session['was_reverified'], False)
예제 #18
0
 def test_pin_recently_entered_successfully(self):
     self.request.session['last_pin_success'] = datetime.now()
     eq_(utils.check_pin_status(self.request),
         get_wait_url(mock.Mock(session={})))