From b8ad8a126265fb030baaac5bbb36c88a5be29d9b Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Mon, 2 Sep 2019 11:17:44 +0200 Subject: [PATCH] Add impersonation function to menus. Advances #63. --- biscuit/core/menus.py | 10 ++++++++++ biscuit/core/util/core_helpers.py | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/biscuit/core/menus.py b/biscuit/core/menus.py index a8914a5a9..2cefbd09e 100644 --- a/biscuit/core/menus.py +++ b/biscuit/core/menus.py @@ -7,6 +7,11 @@ MENUS = { 'url': '#', 'root': True, 'submenu': [ + { + 'name': _('Stop impersonation'), + 'url': 'impersonate-stop', + 'validators': ['menu_generator.validators.is_authenticated', 'biscuit.core.util.core_helpers.is_impersonate'] + }, { 'name': _('Login'), 'url': 'login', @@ -28,6 +33,11 @@ MENUS = { 'name': _('Data management'), 'url': 'data_management', 'validators': ['menu_generator.validators.is_authenticated', 'menu_generator.validators.is_superuser'] + }, + { + 'name': _('Impersonation'), + 'url': 'impersonate-list', + 'validators': ['menu_generator.validators.is_authenticated', 'menu_generator.validators.is_superuser'] } ] }, diff --git a/biscuit/core/util/core_helpers.py b/biscuit/core/util/core_helpers.py index 29f65e399..4752aec92 100644 --- a/biscuit/core/util/core_helpers.py +++ b/biscuit/core/util/core_helpers.py @@ -5,6 +5,7 @@ from warnings import warn from django.apps import apps from django.conf import settings +from django.http import HttpRequest from django_global_request.middleware import get_request @@ -63,3 +64,8 @@ def get_current_school() -> Optional: # Raise an exception because not finding a school wreaks havoc raise RuntimeError('No school set or found. Check your database.') + + +def is_impersonate(request: HttpRequest) -> bool: + if hasattr(request, 'user'): + return getattr(request.user, 'is_impersonate', False) -- GitLab