forked from enviPath/enviPy
...
This commit is contained in:
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user