forked from enviPath/enviPy
...
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
import logging
|
||||
from collections import defaultdict
|
||||
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.http import HttpResponse, JsonResponse
|
||||
from django.shortcuts import redirect
|
||||
from jwt import InvalidIssuerError
|
||||
from ninja import Field, Form, Query, Router, Schema
|
||||
from ninja.security import HttpBearer
|
||||
|
||||
from utilities.chem import FormatConverter
|
||||
from utilities.misc import PackageExporter
|
||||
|
||||
from .logic import (
|
||||
EPDBURLParser,
|
||||
GroupManager,
|
||||
@ -46,9 +45,12 @@ from .models import (
|
||||
User,
|
||||
UserPackagePermission,
|
||||
)
|
||||
from .views import get_remote_address
|
||||
|
||||
Package = s.GET_PACKAGE_MODEL()
|
||||
|
||||
auth_log = logging.get_logger("auth")
|
||||
|
||||
|
||||
def get_cached_jwks(tenant_id: str, force=False) -> Dict:
|
||||
"""Get JWKS using Django cache"""
|
||||
@ -116,15 +118,22 @@ def validate_token(token: str) -> dict:
|
||||
class MSBearerTokenAuth(HttpBearer):
|
||||
|
||||
def authenticate(self, request, token):
|
||||
|
||||
auth_log.info(f"Authentication request by {get_remote_address(request)}")
|
||||
|
||||
if token is None:
|
||||
return None
|
||||
|
||||
claims = validate_token(token)
|
||||
|
||||
if not User.objects.filter(uuid=claims['oid']).exists():
|
||||
auth_log.info(f"Authentication request by {get_remote_address(request)} failed!")
|
||||
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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user