From b9c3618c41f877dcfab05095725b31dcb0b23173 Mon Sep 17 00:00:00 2001 From: Tim Lorsbach Date: Sat, 25 Jul 2026 22:50:20 +0200 Subject: [PATCH] secret packs viz --- .../modals/collections/new_package_modal.html | 3 ++- epauth/views.py | 13 +++++++++++++ epdb/legacy_api.py | 2 +- epdb/views.py | 2 +- templates/components/navbar.html | 5 +++++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/bayer/templates/modals/collections/new_package_modal.html b/bayer/templates/modals/collections/new_package_modal.html index 54e03fae..924f7939 100644 --- a/bayer/templates/modals/collections/new_package_modal.html +++ b/bayer/templates/modals/collections/new_package_modal.html @@ -131,8 +131,9 @@ id="package-data-pool" name="package-data-pool" class="select select-bordered w-full" + :required="isSecret" > - + {% for obj in meta.secret_groups %} {% endfor %} diff --git a/epauth/views.py b/epauth/views.py index 5a5746a4..e1fbd7d5 100644 --- a/epauth/views.py +++ b/epauth/views.py @@ -83,6 +83,7 @@ def entra_callback(request): # Get implementing class User = get_user_model() + registered = False if User.objects.filter(uuid=user_oid).exists(): u = User.objects.get(uuid=user_oid) @@ -93,6 +94,7 @@ def entra_callback(request): else: auth_log.info(f"Registering {user_name} with OID {user_oid}") u = UserManager.create_user(user_name, user_email, None, uuid=user_oid, is_active=True) + registered = True auth_log.info(f"User {user_name} {'(admin) ' if u.is_superuser else ''}with OID {user_oid} successfully logged in as {u.username} from {get_remote_address(request)}") login(request, u) @@ -132,6 +134,17 @@ def entra_callback(request): g.user_member.remove(u) auth_log.info(f"Login Group Sync: Removing {u.username} from Group {g.name} ({ uuid })") + if registered: + # #72 make package secret if user is part of a secret group + for id, name in s.ENTRA_SECRET_GROUPS.items(): + group = Group.objects.get(uuid=id) + if group.user_member.contains(u): + # User is eligible for secrete + pack = u.default_package + u.data_pool = group + u.classification_level = u.Classification.SECRET + u.save() + # EDIT END return redirect(s.SERVER_URL) # Handle errors diff --git a/epdb/legacy_api.py b/epdb/legacy_api.py index c6228e7a..1c24f538 100644 --- a/epdb/legacy_api.py +++ b/epdb/legacy_api.py @@ -49,7 +49,7 @@ from .views import get_remote_address Package = s.GET_PACKAGE_MODEL() -auth_log = logging.get_logger("auth") +auth_log = logging.getLogger("auth") def get_cached_jwks(tenant_id: str, force=False) -> Dict: diff --git a/epdb/views.py b/epdb/views.py index ac232490..90e2aa09 100644 --- a/epdb/views.py +++ b/epdb/views.py @@ -423,7 +423,7 @@ def get_base_context(request, for_user=None) -> Dict[str, Any]: "external_databases": ExternalDatabase.get_databases(), "site_id": s.MATOMO_SITE_ID, # EDIT START - "secret_groups": Group.objects.filter(secret=True), + "secret_groups": Group.objects.filter(secret=True, user_member=current_user), # EDIT END }, } diff --git a/templates/components/navbar.html b/templates/components/navbar.html index 05dab6a8..36fd9fe2 100644 --- a/templates/components/navbar.html +++ b/templates/components/navbar.html @@ -105,6 +105,11 @@ {% elif meta.url_contains_package and meta.current_package.get_classification_level_display == "Secret" %} + {% elif not meta.url_contains_package and meta.user.default_package.get_classification_level_display == "Restricted" %} + + {% elif not meta.url_contains_package and meta.user.default_package.get_classification_level_display == "Secret" %} + + {% endif %} {% if not public_mode %}