Beispiel #1
0
    def test_email_verification_code_verify_negative(self):
        evc = EmailVerificationCode()

        self.assertNotEqual(evc.code, None)

        user = User(first_name='John',
                    last_name='Doe',
                    email='*****@*****.**')
        Session.add(user)
        Session.flush()

        evc2 = EmailVerificationCode(evc.code)
        result = evc2.verify('*****@*****.**')
        self.assertEqual(result, None)
Beispiel #2
0
def verify_email(request):
    try:
        code = request.params['code']
    except KeyError:
        return HTTPBadRequest('Missing code parameter')

    try:
        email = request.params['email']
    except KeyError:
        return HTTPBadRequest('Missing email parameter')

    evc = EmailVerificationCode(code)
    user = evc.verify(email)
    if user is not None:
        request.session.flash(
            _('Congratulations, your email has been successfully verified'),
            'success',
        )
        user.verify_email()
        Session.add(user)
        return {
            'verified': True,
        }
    else:
        request.session.flash(
            _('Sorry, your verification code is not correct or has expired'),
            'error',
        )
        return {
            'verified': False,
        }
Beispiel #3
0
    def test_email_verification_code_send(self):
        evc = EmailVerificationCode()
        user = User(first_name='John',
                    last_name='Doe',
                    email='*****@*****.**',
                    email_verification_code=evc.code)
        Session.add(user)
        Session.flush()

        request = testing.DummyRequest()
        mailer = get_mailer(request)
        self.assertEqual(len(mailer.outbox), 0)

        evc2 = EmailVerificationCode(evc.code)
        evc2.send(request, user, 'http://example.com/verify')

        self.assertEqual(len(mailer.outbox), 1)
        self.assertEqual(mailer.outbox[0].subject,
                         'Please verify your email address')
        self.assertEqual(mailer.outbox[0].recipients, ['*****@*****.**'])
Beispiel #4
0
def send_email_verification_code(request):
    user = request.user
    if not user.email:
        return {
            'status': 'bad',
            'error': 'You have not an email in your profile',
        }

    if 'submit' in request.POST:
        evc = EmailVerificationCode()
        user.email_verification_code = evc.code
        link = request.route_url('user_verify_email')
        evc.send(request, request.user, link)
        return {'status': 'ok', 'error': None}
    else:
        return {'status': 'bad', 'error': 'Not a post'}
Beispiel #5
0
def register_new_user(request):
    try:
        user_info = request.session['user_info']
    except KeyError:
        return HTTPBadRequest('Missing user info in the session')

    try:
        next_url = request.session['next_url']
    except KeyError:
        next_url = request.route_url('oauth2_clients')

    schema = NewUserSchema()
    button1 = Button('submit', _('Register into Yith Library'))
    button1.css_class = 'btn-primary'
    button2 = Button('cancel', _('Cancel'))
    button2.css_class = 'btn-default logout'

    form = Form(schema, buttons=(button1, button2))

    if 'submit' in request.POST:

        controls = request.POST.items()
        try:
            appstruct = form.validate(controls)
        except ValidationFailure as e:
            return {
                'form': e.render(),
                'provider': user_info.get('provider', ''),
                'email': user_info.get('email', ''),
                'next_url': next_url,
            }

        email = appstruct['email']
        if email != '' and email == user_info['email']:
            email_verified = True
        else:
            email_verified = False

        user_attrs = {
            'screen_name': appstruct['screen_name'],
            'first_name': appstruct['first_name'],
            'last_name': appstruct['last_name'],
            'email': email,
            'email_verified': email_verified,
        }

        if request.google_analytics.is_in_session():
            allow_analytics = request.google_analytics.show_in_session()
            user_attrs[analytics.USER_ATTR] = allow_analytics
            request.google_analytics.clean_session()

        user = User(**user_attrs)
        provider = user_info['provider']
        external_id = user_info['external_id']
        user.add_identity(provider, external_id)
        Session.add(user)

        if not email_verified and email != '':
            evc = EmailVerificationCode()
            user.email_verification_code = evc.code
            link = request.route_url('user_verify_email')
            evc.send(request, user, link)

        del request.session['user_info']
        if 'next_url' in request.session:
            del request.session['next_url']

        Session.flush()

        request.session['current_provider'] = provider
        return HTTPFound(location=next_url,
                         headers=remember(request, str(user.id)))
    elif 'cancel' in request.POST:
        del request.session['user_info']
        if 'next_url' in request.session:
            del request.session['next_url']

        return HTTPFound(location=next_url)

    return {
        'form':
        form.render({
            'first_name': user_info.get('first_name', ''),
            'last_name': user_info.get('last_name', ''),
            'screen_name': user_info.get('screen_name', ''),
            'email': user_info.get('email', ''),
        }),
        'provider':
        user_info.get('provider', ''),
        'email':
        user_info.get('email', ''),
        'next_url':
        next_url,
    }