secret packs viz
Some checks failed
CI / test (pull_request) Failing after 30s
API CI / api-tests (pull_request) Failing after 43s

This commit is contained in:
Tim Lorsbach
2026-07-25 22:50:20 +02:00
parent 9bf65d4319
commit b9c3618c41
5 changed files with 22 additions and 3 deletions

View File

@ -131,8 +131,9 @@
id="package-data-pool"
name="package-data-pool"
class="select select-bordered w-full"
:required="isSecret"
>
<option value="" disabled selected>Select Data Pool</option>
<option value="" disabled>Select Data Pool</option>
{% for obj in meta.secret_groups %}
<option value="{{ obj.url }}">{{ obj.name|safe }}</option>
{% endfor %}

View File

@ -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

View File

@ -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:

View File

@ -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
},
}

View File

@ -105,6 +105,11 @@
<img src="{% static 'images/restricted_mid.png' %}" width="200">
{% elif meta.url_contains_package and meta.current_package.get_classification_level_display == "Secret" %}
<img src="{% static 'images/secret_mid.png' %}" width="120">
{% elif not meta.url_contains_package and meta.user.default_package.get_classification_level_display == "Restricted" %}
<img src="{% static 'images/restricted_mid.png' %}" width="200">
{% elif not meta.url_contains_package and meta.user.default_package.get_classification_level_display == "Secret" %}
<img src="{% static 'images/secret_mid.png' %}" width="200">
{% endif %}
{% if not public_mode %}
<a id="search-trigger" role="button" class="cursor-pointer">