mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 10:28:41 -04:00
Merge pull request #3256 from alphagov/fix-session-bug-change-user-email
Fix session bug when changing user’s email address
This commit is contained in:
@@ -144,6 +144,7 @@ def remove_user_from_service(service_id, user_id):
|
|||||||
def edit_user_email(service_id, user_id):
|
def edit_user_email(service_id, user_id):
|
||||||
user = current_service.get_team_member(user_id)
|
user = current_service.get_team_member(user_id)
|
||||||
user_email = user.email_address
|
user_email = user.email_address
|
||||||
|
session_key = 'team_member_email_change-{}'.format(user_id)
|
||||||
|
|
||||||
if is_gov_user(user_email):
|
if is_gov_user(user_email):
|
||||||
form = ChangeEmailForm(User.already_registered, email_address=user_email)
|
form = ChangeEmailForm(User.already_registered, email_address=user_email)
|
||||||
@@ -154,7 +155,7 @@ def edit_user_email(service_id, user_id):
|
|||||||
return redirect(url_for('.manage_users', service_id=current_service.id))
|
return redirect(url_for('.manage_users', service_id=current_service.id))
|
||||||
|
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
session['team_member_email_change'] = form.email_address.data
|
session[session_key] = form.email_address.data
|
||||||
|
|
||||||
return redirect(url_for('.confirm_edit_user_email', user_id=user.id, service_id=service_id))
|
return redirect(url_for('.confirm_edit_user_email', user_id=user.id, service_id=service_id))
|
||||||
|
|
||||||
@@ -170,8 +171,9 @@ def edit_user_email(service_id, user_id):
|
|||||||
@user_has_permissions('manage_service')
|
@user_has_permissions('manage_service')
|
||||||
def confirm_edit_user_email(service_id, user_id):
|
def confirm_edit_user_email(service_id, user_id):
|
||||||
user = current_service.get_team_member(user_id)
|
user = current_service.get_team_member(user_id)
|
||||||
if 'team_member_email_change' in session:
|
session_key = 'team_member_email_change-{}'.format(user_id)
|
||||||
new_email = session['team_member_email_change']
|
if session_key in session:
|
||||||
|
new_email = session[session_key]
|
||||||
else:
|
else:
|
||||||
return redirect(url_for(
|
return redirect(url_for(
|
||||||
'.edit_user_email',
|
'.edit_user_email',
|
||||||
@@ -186,7 +188,7 @@ def confirm_edit_user_email(service_id, user_id):
|
|||||||
else:
|
else:
|
||||||
create_email_change_event(user.id, current_user.id, user.email_address, new_email)
|
create_email_change_event(user.id, current_user.id, user.email_address, new_email)
|
||||||
finally:
|
finally:
|
||||||
session.pop('team_member_email_change', None)
|
session.pop(session_key, None)
|
||||||
|
|
||||||
return redirect(url_for(
|
return redirect(url_for(
|
||||||
'.manage_users',
|
'.manage_users',
|
||||||
|
|||||||
@@ -1079,6 +1079,10 @@ def test_edit_user_email_redirects_to_confirmation(
|
|||||||
_external=True,
|
_external=True,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
with client_request.session_transaction() as session:
|
||||||
|
assert session[
|
||||||
|
'team_member_email_change-{}'.format(active_user_with_permissions['id'])
|
||||||
|
] == 'test@user.gov.uk'
|
||||||
|
|
||||||
|
|
||||||
def test_edit_user_email_without_changing_goes_back_to_team_members(
|
def test_edit_user_email_without_changing_goes_back_to_team_members(
|
||||||
@@ -1179,6 +1183,8 @@ 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 government email address.' in page.find('span', class_='error-message').text
|
||||||
|
with client_request.session_transaction() as session:
|
||||||
|
assert 'team_member_email_change-'.format(active_user_with_permissions['id']) not in session
|
||||||
|
|
||||||
|
|
||||||
def test_confirm_edit_user_email_page(
|
def test_confirm_edit_user_email_page(
|
||||||
@@ -1189,7 +1195,9 @@ def test_confirm_edit_user_email_page(
|
|||||||
):
|
):
|
||||||
new_email = 'new_email@gov.uk'
|
new_email = 'new_email@gov.uk'
|
||||||
with client_request.session_transaction() as session:
|
with client_request.session_transaction() as session:
|
||||||
session['team_member_email_change'] = new_email
|
session[
|
||||||
|
'team_member_email_change-{}'.format(active_user_with_permissions['id'])
|
||||||
|
] = new_email
|
||||||
|
|
||||||
page = client_request.get(
|
page = client_request.get(
|
||||||
'main.confirm_edit_user_email',
|
'main.confirm_edit_user_email',
|
||||||
@@ -1253,7 +1261,9 @@ def test_confirm_edit_user_email_changes_user_email(
|
|||||||
|
|
||||||
new_email = 'new_email@gov.uk'
|
new_email = 'new_email@gov.uk'
|
||||||
with client_request.session_transaction() as session:
|
with client_request.session_transaction() as session:
|
||||||
session['team_member_email_change'] = new_email
|
session[
|
||||||
|
'team_member_email_change-{}'.format(api_user_active['id'])
|
||||||
|
] = new_email
|
||||||
|
|
||||||
client_request.post(
|
client_request.post(
|
||||||
'main.confirm_edit_user_email',
|
'main.confirm_edit_user_email',
|
||||||
|
|||||||
Reference in New Issue
Block a user