diff --git a/app/main/views/choose_account.py b/app/main/views/choose_account.py index 9bbaf06dc..69a713aba 100644 --- a/app/main/views/choose_account.py +++ b/app/main/views/choose_account.py @@ -31,11 +31,11 @@ def show_accounts_or_dashboard(): return redirect(url_for('.index')) service_id = session.get('service_id') - if service_id and (service_id in current_user.service_ids or current_user.platform_admin): + if service_id and (current_user.belongs_to_service(service_id) or current_user.platform_admin): return redirect(url_for('.service_dashboard', service_id=service_id)) organisation_id = session.get('organisation_id') - if organisation_id and (organisation_id in current_user.organisation_ids or current_user.platform_admin): + if organisation_id and (current_user.belongs_to_organisation(organisation_id) or current_user.platform_admin): return redirect(url_for('.organisation_dashboard', org_id=organisation_id)) if len(current_user.service_ids) == 1 and not current_user.organisation_ids: diff --git a/app/models/user.py b/app/models/user.py index 3bbaa7e1b..9c03ceab6 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -228,6 +228,9 @@ class User(JSONModel, UserMixin): if not self.belongs_to_service(service_id): abort(403) + def belongs_to_organisation(self, organisation_id): + return str(organisation_id) in self.organisation_ids + @property def locked(self): return self.failed_login_count >= self.max_failed_login_count