...
Some checks failed
CI / test (pull_request) Failing after 28s
API CI / api-tests (pull_request) Failing after 38s

This commit is contained in:
Tim Lorsbach
2026-07-25 22:23:57 +02:00
parent d72676710a
commit 9bf65d4319
3 changed files with 16 additions and 7 deletions

View File

@ -94,7 +94,7 @@ def entra_callback(request):
auth_log.info(f"Registering {user_name} with OID {user_oid}") 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) u = UserManager.create_user(user_name, user_email, None, uuid=user_oid, is_active=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)}") 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) login(request, u)
# EDIT START # EDIT START

View File

@ -1,3 +1,4 @@
import logging
from collections import defaultdict from collections import defaultdict
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
@ -9,13 +10,11 @@ from django.contrib.auth import get_user_model
from django.core.cache import cache from django.core.cache import cache
from django.http import HttpResponse, JsonResponse from django.http import HttpResponse, JsonResponse
from django.shortcuts import redirect from django.shortcuts import redirect
from jwt import InvalidIssuerError
from ninja import Field, Form, Query, Router, Schema from ninja import Field, Form, Query, Router, Schema
from ninja.security import HttpBearer from ninja.security import HttpBearer
from utilities.chem import FormatConverter from utilities.chem import FormatConverter
from utilities.misc import PackageExporter from utilities.misc import PackageExporter
from .logic import ( from .logic import (
EPDBURLParser, EPDBURLParser,
GroupManager, GroupManager,
@ -46,9 +45,12 @@ from .models import (
User, User,
UserPackagePermission, UserPackagePermission,
) )
from .views import get_remote_address
Package = s.GET_PACKAGE_MODEL() Package = s.GET_PACKAGE_MODEL()
auth_log = logging.get_logger("auth")
def get_cached_jwks(tenant_id: str, force=False) -> Dict: def get_cached_jwks(tenant_id: str, force=False) -> Dict:
"""Get JWKS using Django cache""" """Get JWKS using Django cache"""
@ -116,15 +118,22 @@ def validate_token(token: str) -> dict:
class MSBearerTokenAuth(HttpBearer): class MSBearerTokenAuth(HttpBearer):
def authenticate(self, request, token): def authenticate(self, request, token):
auth_log.info(f"Authentication request by {get_remote_address(request)}")
if token is None: if token is None:
return None return None
claims = validate_token(token) claims = validate_token(token)
if not User.objects.filter(uuid=claims['oid']).exists(): if not User.objects.filter(uuid=claims['oid']).exists():
auth_log.info(f"Authentication request by {get_remote_address(request)} failed!")
return None return None
request.user = User.objects.get(uuid=claims['oid']) user = User.objects.get(uuid=claims['oid'])
request.user = user
auth_log.info(
f"User {user.username} {'(admin) ' if user.is_superuser else ''}with OID {user.uuid} successfully logged in as {user.username} from {get_remote_address(request)}")
return request.user return request.user

View File

@ -585,9 +585,11 @@ class PackageManager(object):
if isinstance(grantee, User): if isinstance(grantee, User):
perm_cls = UserPackagePermission perm_cls = UserPackagePermission
data["user"] = grantee data["user"] = grantee
grantee_name = grantee.username
else: else:
perm_cls = GroupPackagePermission perm_cls = GroupPackagePermission
data["group"] = grantee data["group"] = grantee
grantee_name = grantee.name
if new_perm is None: if new_perm is None:
qs = perm_cls.objects.filter(**data) qs = perm_cls.objects.filter(**data)
@ -596,7 +598,7 @@ class PackageManager(object):
if qs.count() != 0: if qs.count() != 0:
logger.info(f"Deleting Perm {qs.first()}") logger.info(f"Deleting Perm {qs.first()}")
qs.delete() qs.delete()
auth_log.info(f"{caller.username} ({caller.url}) revokes {grantee.name} ({grantee.url}) all Permissions on {package.name} ({package.url})") auth_log.info(f"{caller.username} ({caller.url}) revokes {grantee_name} ({grantee.url}) all Permissions on {package.name} ({package.url})")
else: else:
logger.debug(f"No Permission object for {perm_cls} with filter {data} found!") logger.debug(f"No Permission object for {perm_cls} with filter {data} found!")
else: else:
@ -608,8 +610,6 @@ class PackageManager(object):
_ = perm_cls.objects.update_or_create(defaults={"permission": new_perm}, **data) _ = perm_cls.objects.update_or_create(defaults={"permission": new_perm}, **data)
grantee_name = grantee.username if isinstance(grantee, User) else grantee.name
if old_perm is None: if old_perm is None:
auth_log.info(f"{caller.username} ({caller.url}) grants {grantee_name} ({grantee.url}) '{new_perm}' Permissions on {package.name} ({package.url})") auth_log.info(f"{caller.username} ({caller.url}) grants {grantee_name} ({grantee.url}) '{new_perm}' Permissions on {package.name} ({package.url})")
else: else: