Source code for tcms.rpc.decorators

from collections.abc import Callable

from django.http import HttpRequest


[docs] def django_login_required(request: HttpRequest): """ API clients must call Auth.login which sets the Django session cookie. Which is then inspected/understood by existing middleware which sets request.user! """ try: user = request.user if user.is_authenticated: return user return None except Exception: # pylint: disable=broad-exception-caught return None
[docs] def permissions_required(*perms: str) -> Callable[[HttpRequest], object | None]: def check(request: HttpRequest): # pylint: disable=nested-function-found user = django_login_required(request) if user and user.has_perms(perms): return user return None return check