mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 22:40:31 -04:00
Link to ‘who it’s for’ when error creating account
If someone enters an email address from a domain we don’t recognise we direct them straight to our support channel. This is causing increased contact from suppliers and members of the public. Now that we have a page which explains who can use Notify, let’s direct people there first. Then if they really do need to contact support (because we don’t recognise their organisation) then they can do so from that page.
This commit is contained in:
@@ -43,11 +43,10 @@ class ValidGovEmail:
|
|||||||
return
|
return
|
||||||
|
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
message = (
|
message = '''
|
||||||
'Enter a government email address.'
|
Enter a public sector email address or
|
||||||
' If you think you should have access'
|
<a class="govuk-link govuk-link--no-visited-state" href="{}">find out who can use Notify</a>
|
||||||
' <a class="govuk-link govuk-link--no-visited-state" href="{}">contact us</a>'
|
'''.format(url_for('main.who_its_for'))
|
||||||
).format(url_for('main.support'))
|
|
||||||
if not is_gov_user(field.data.lower()):
|
if not is_gov_user(field.data.lower()):
|
||||||
raise ValidationError(message)
|
raise ValidationError(message)
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Create an account
|
|||||||
<h1 class="heading-large">Create an account</h1>
|
<h1 class="heading-large">Create an account</h1>
|
||||||
{% call form_wrapper(autocomplete=True) %}
|
{% call form_wrapper(autocomplete=True) %}
|
||||||
{{ textbox(form.name, width='3-4') }}
|
{{ textbox(form.name, width='3-4') }}
|
||||||
{{ textbox(form.email_address, hint="Must be from a government organisation", width='3-4', safe_error_message=True, autocomplete='email') }}
|
{{ textbox(form.email_address, hint="Must be from a public sector organisation", width='3-4', safe_error_message=True, autocomplete='email') }}
|
||||||
<div class="extra-tracking">
|
<div class="extra-tracking">
|
||||||
{{ textbox(form.mobile_number, width='3-4', hint='We’ll send you a security code by text message') }}
|
{{ textbox(form.mobile_number, width='3-4', hint='We’ll send you a security code by text message') }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ def test_valid_email_not_in_valid_domains(
|
|||||||
):
|
):
|
||||||
form = RegisterUserForm(email_address="test@test.com", mobile_number='441231231231')
|
form = RegisterUserForm(email_address="test@test.com", mobile_number='441231231231')
|
||||||
assert not form.validate()
|
assert not form.validate()
|
||||||
assert "Enter a government email address" in form.errors['email_address'][0]
|
assert "Enter a public sector email address" in form.errors['email_address'][0]
|
||||||
|
|
||||||
|
|
||||||
def test_valid_email_in_valid_domains(
|
def test_valid_email_in_valid_domains(
|
||||||
|
|||||||
@@ -1192,7 +1192,7 @@ def test_edit_user_email_cannot_change_a_gov_email_address_to_a_non_gov_email_ad
|
|||||||
},
|
},
|
||||||
_expected_status=200,
|
_expected_status=200,
|
||||||
)
|
)
|
||||||
assert 'Enter a government email address.' in page.find('span', class_='error-message').text
|
assert 'Enter a public sector email address' in page.select_one('.error-message').text
|
||||||
with client_request.session_transaction() as session:
|
with client_request.session_transaction() as session:
|
||||||
assert 'team_member_email_change-'.format(active_user_with_permissions['id']) not in session
|
assert 'team_member_email_change-'.format(active_user_with_permissions['id']) not in session
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from flask import session, url_for
|
|||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
|
|
||||||
from app.models.user import InvitedUser
|
from app.models.user import InvitedUser
|
||||||
|
from tests.conftest import normalize_spaces
|
||||||
|
|
||||||
|
|
||||||
def test_render_register_returns_template_with_form(client):
|
def test_render_register_returns_template_with_form(client):
|
||||||
@@ -97,20 +98,27 @@ def test_process_register_returns_200_when_mobile_number_is_invalid(
|
|||||||
|
|
||||||
|
|
||||||
def test_should_return_200_when_email_is_not_gov_uk(
|
def test_should_return_200_when_email_is_not_gov_uk(
|
||||||
client,
|
client_request,
|
||||||
mock_send_verify_code,
|
|
||||||
mock_get_user_by_email,
|
|
||||||
mock_get_organisations,
|
mock_get_organisations,
|
||||||
mock_login,
|
|
||||||
):
|
):
|
||||||
response = client.post(url_for('main.register'),
|
client_request.logout()
|
||||||
data={'name': 'Bad Mobile',
|
page = client_request.post(
|
||||||
'email_address': 'bad_mobile@example.not.right',
|
'main.register',
|
||||||
'mobile_number': '+44123412345',
|
_data={
|
||||||
'password': 'validPassword!'})
|
'name': 'Firstname Lastname',
|
||||||
|
'email_address': 'bad_mobile@example.not.right',
|
||||||
|
'mobile_number': '07900900123',
|
||||||
|
'password': 'validPassword!'
|
||||||
|
},
|
||||||
|
_expected_status=200,
|
||||||
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert normalize_spaces(page.select_one('.error-message').text) == (
|
||||||
assert 'Enter a government email address' in response.get_data(as_text=True)
|
'Enter a public sector email address or find out who can use Notify'
|
||||||
|
)
|
||||||
|
assert page.select_one('.error-message a')['href'] == url_for(
|
||||||
|
'main.who_its_for'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('email_address', (
|
@pytest.mark.parametrize('email_address', (
|
||||||
|
|||||||
Reference in New Issue
Block a user