website/hub/broker/authentication.py
2025-01-31 15:34:10 +01:00

22 lines
914 B
Python

from rest_framework.authentication import BasicAuthentication
from rest_framework.exceptions import AuthenticationFailed
from django.contrib.auth.models import User
from .models import ServiceBrokerUser
class ServiceBrokerAuthentication(BasicAuthentication):
def authenticate_credentials(self, userid, password, request=None):
try:
user = User.objects.get(username=userid)
if not user.check_password(password):
raise AuthenticationFailed("Invalid password")
# Ensure user has broker permissions
try:
broker_user = ServiceBrokerUser.objects.get(user=user)
except ServiceBrokerUser.DoesNotExist:
raise AuthenticationFailed("User is not authorized for broker access")
return (user, None)
except User.DoesNotExist:
raise AuthenticationFailed("Invalid username")