fc / apps /core /security /admin_access.py
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
904 Bytes
"""Module for admin access."""
from __future__ import annotations
from typing import Any
from django.http import HttpRequest
from apps.core.exceptions import PermissionDenied
def get_request_user(request: HttpRequest) -> Any | None:
user = getattr(request, "user", None)
if user and getattr(user, "is_authenticated", False):
return user
return getattr(request, "auth", None)
def is_admin_user(user: Any | None) -> bool:
return bool(
user
and (
getattr(user, "is_admin", False) or getattr(user, "is_superuser", False) or getattr(user, "is_staff", False)
)
)
def ensure_admin_request(
request: HttpRequest,
*,
message: str = "无权限执行该操作",
code: str = "PERMISSION_DENIED",
) -> None:
if is_admin_user(get_request_user(request)):
return
raise PermissionDenied(message=message, code=code)