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) if evc.verify(request.db, email): request.session.flash( _('Congratulations, your email has been successfully verified'), 'success', ) evc.remove(request.db, email, True) return { 'verified': True, } else: request.session.flash( _('Sorry, your verification code is not correct or has expired'), 'error', ) return { 'verified': False, }
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, }
def test_email_verification_code(self): evc = EmailVerificationCode() self.assertNotEqual(evc.code, None) user_id = self.db.users.insert({ 'first_name': 'John', 'last_name': 'Doe', 'email': '*****@*****.**', }, safe=True) user = self.db.users.find_one({'_id': user_id}) evc.store(self.db, user) user = self.db.users.find_one({'_id': user_id}) self.assertEqual(user['email_verification_code'], evc.code) evc2 = EmailVerificationCode(evc.code) result = evc2.verify(self.db, '*****@*****.**') self.assertTrue(result) evc2.remove(self.db, '*****@*****.**', True) user = self.db.users.find_one({'_id': user_id}) self.assertFalse('email_verification_code' in user) self.assertTrue(user['email_verified']) request = DummyRequest() mailer = get_mailer(request) self.assertEqual(len(mailer.outbox), 0) 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, ['*****@*****.**'])
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)
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)
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'}
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'}
def send_email_verification_code(request): if not request.user['email']: return { 'status': 'bad', 'error': 'You have not an email in your profile', } if 'submit' in request.POST: evc = EmailVerificationCode() if evc.store(request.db, request.user): link = request.route_url('user_verify_email') evc.send(request, request.user, link) return {'status': 'ok', 'error': None} else: return { 'status': 'bad', 'error': 'There were problems storing the verification code', } else: return {'status': 'bad', 'error': 'Not a post'}
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, ['*****@*****.**'])
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, ['*****@*****.**'])
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, } provider = user_info['provider'] provider_key = provider + '_id' email = appstruct['email'] if email != '' and email == user_info['email']: email_verified = True else: email_verified = False now = datetime.datetime.now(tz=utc) user_attrs = { provider_key: user_info[provider_key], 'screen_name': appstruct['screen_name'], 'first_name': appstruct['first_name'], 'last_name': appstruct['last_name'], 'email': email, 'email_verified': email_verified, 'date_joined': now, 'last_login': now, 'send_passwords_periodically': False, } 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() _id = request.db.users.insert(user_attrs) if not email_verified and email != '': evc = EmailVerificationCode() user = request.db.users.find_one({'_id': _id}) if evc.store(request.db, user): 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'] request.session['current_provider'] = provider return HTTPFound(location=next_url, headers=remember(request, str(_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, }
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, }
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, }