mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 10:28:41 -04:00
If a user has already registered with the email they will get a different email when the register again.
The email includes likes to sign in and send feedback
This commit is contained in:
+10
-14
@@ -34,12 +34,8 @@ def register():
|
|||||||
|
|
||||||
form = RegisterUserForm()
|
form = RegisterUserForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
registered = _do_registration(form, send_sms=False)
|
_do_registration(form, send_sms=False)
|
||||||
if registered:
|
return redirect(url_for('main.registration_continue'))
|
||||||
return redirect(url_for('main.registration_continue'))
|
|
||||||
else:
|
|
||||||
flash('There was an error registering your account')
|
|
||||||
return render_template('views/register.html', form=form), 400
|
|
||||||
|
|
||||||
return render_template('views/register.html', form=form)
|
return render_template('views/register.html', form=form)
|
||||||
|
|
||||||
@@ -54,12 +50,9 @@ def register_from_invite():
|
|||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
if form.service.data != invited_user['service'] or form.email_address.data != invited_user['email_address']:
|
if form.service.data != invited_user['service'] or form.email_address.data != invited_user['email_address']:
|
||||||
abort(400)
|
abort(400)
|
||||||
registered = _do_registration(form, send_email=False)
|
_do_registration(form, send_email=False)
|
||||||
if registered:
|
invite_api_client.accept_invite(invited_user['service'], invited_user['id'])
|
||||||
invite_api_client.accept_invite(invited_user['service'], invited_user['id'])
|
return redirect(url_for('main.verify'))
|
||||||
return redirect(url_for('main.verify'))
|
|
||||||
else:
|
|
||||||
flash('There was an error registering your account')
|
|
||||||
|
|
||||||
form.service.data = invited_user['service']
|
form.service.data = invited_user['service']
|
||||||
form.email_address.data = invited_user['email_address']
|
form.email_address.data = invited_user['email_address']
|
||||||
@@ -87,9 +80,12 @@ def _do_registration(form, service=None, send_sms=True, send_email=True):
|
|||||||
user_api_client.send_verify_code(user.id, 'sms', user.mobile_number)
|
user_api_client.send_verify_code(user.id, 'sms', user.mobile_number)
|
||||||
session['expiry_date'] = str(datetime.utcnow() + timedelta(hours=1))
|
session['expiry_date'] = str(datetime.utcnow() + timedelta(hours=1))
|
||||||
session['user_details'] = {"email": user.email_address, "id": user.id}
|
session['user_details'] = {"email": user.email_address, "id": user.id}
|
||||||
return True
|
|
||||||
else:
|
else:
|
||||||
return False
|
if send_email:
|
||||||
|
user = user_api_client.get_user_by_email(form.email_address.data)
|
||||||
|
user_api_client.send_already_registered_email(user.id, user.email_address)
|
||||||
|
session['expiry_date'] = str(datetime.utcnow() + timedelta(hours=1))
|
||||||
|
session['user_details'] = {"email": user.email_address, "id": user.id}
|
||||||
|
|
||||||
|
|
||||||
@main.route('/registration-continue')
|
@main.route('/registration-continue')
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ class UserApiClient(BaseAPIClient):
|
|||||||
endpoint = '/user/{0}/email-verification'.format(user_id)
|
endpoint = '/user/{0}/email-verification'.format(user_id)
|
||||||
self.post(endpoint, data=data)
|
self.post(endpoint, data=data)
|
||||||
|
|
||||||
def sent_already_registered_email(self, user_id, to):
|
def send_already_registered_email(self, user_id, to):
|
||||||
data = {'email': to}
|
data = {'email': to}
|
||||||
endpoint = '/user/{0}/email-already-registered'.format(user_id)
|
endpoint = '/user/{0}/email-already-registered'.format(user_id)
|
||||||
self.post(endpoint, data=data)
|
self.post(endpoint, data=data)
|
||||||
|
|||||||
@@ -123,9 +123,10 @@ def test_should_return_200_if_password_is_blacklisted(app_,
|
|||||||
assert 'That password is blacklisted, too common' in response.get_data(as_text=True)
|
assert 'That password is blacklisted, too common' in response.get_data(as_text=True)
|
||||||
|
|
||||||
|
|
||||||
def test_register_with_existing_email_returns_error(app_,
|
def test_register_with_existing_email_sends_emails(app_,
|
||||||
api_user_active,
|
api_user_active,
|
||||||
mock_get_user_by_email):
|
mock_get_user_by_email,
|
||||||
|
mock_send_already_registered_email):
|
||||||
user_data = {
|
user_data = {
|
||||||
'name': 'Already Hasaccount',
|
'name': 'Already Hasaccount',
|
||||||
'email_address': api_user_active.email_address,
|
'email_address': api_user_active.email_address,
|
||||||
@@ -136,9 +137,5 @@ def test_register_with_existing_email_returns_error(app_,
|
|||||||
with app_.test_request_context():
|
with app_.test_request_context():
|
||||||
response = app_.test_client().post(url_for('main.register'),
|
response = app_.test_client().post(url_for('main.register'),
|
||||||
data=user_data)
|
data=user_data)
|
||||||
assert response.status_code == 400
|
assert response.status_code == 302
|
||||||
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
assert response.location == url_for('main.registration_continue', _external=True)
|
||||||
element = page.find('h1')
|
|
||||||
assert element.text == 'Create an account'
|
|
||||||
flash_banner = page.find('div', class_='banner-dangerous').string.strip()
|
|
||||||
assert flash_banner == 'There was an error registering your account'
|
|
||||||
|
|||||||
@@ -1121,3 +1121,8 @@ def mock_events(mocker):
|
|||||||
return {'some': 'data'}
|
return {'some': 'data'}
|
||||||
|
|
||||||
return mocker.patch('app.events_api_client.create_event', side_effect=_create_event)
|
return mocker.patch('app.events_api_client.create_event', side_effect=_create_event)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def mock_send_already_registered_email(mocker):
|
||||||
|
return mocker.patch('app.user_api_client.send_already_registered_email')
|
||||||
|
|||||||
Reference in New Issue
Block a user