Properly set session value for services_region

Currently, the value stored in the services_region cookie is ignored
when logging into horizon. This causes confusion for users that have
previously selected one region, to find themselves in a different
region after their token expires and are forced to log in again.

This change sets the services_region session value to the value present
in the cookie, with a fallback to the login region.

Closes-bug: #2040455

Change-Id: I051648844bf8dffce792ff553e9949285b1be6d4
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
This commit is contained in:
Gabriel Adrian Samfira 2023-10-25 10:37:35 +03:00
parent 590632cf5c
commit 66b5713296

View File

@ -192,6 +192,10 @@ def login(request):
region_name = regions.get(login_region) region_name = regions.get(login_region)
request.session['region_endpoint'] = region request.session['region_endpoint'] = region
request.session['region_name'] = region_name request.session['region_name'] = region_name
# Check for a services_region cookie. Fall back to the login_region.
services_region = request.COOKIES.get('services_region', region_name)
if services_region in request.user.available_services_regions:
request.session['services_region'] = services_region
expiration_time = request.user.time_until_expiration() expiration_time = request.user.time_until_expiration()
threshold_days = settings.PASSWORD_EXPIRES_WARNING_THRESHOLD_DAYS threshold_days = settings.PASSWORD_EXPIRES_WARNING_THRESHOLD_DAYS
if (expiration_time is not None and if (expiration_time is not None and