Coverage for baibu/staff/access.py: 100%
12 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-10-06 13:07 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-10-06 13:07 +0000
1from functools import wraps
3from django.contrib.auth.views import redirect_to_login
4from django.core.exceptions import PermissionDenied
7def staff_required(view):
8 """Signed-out users go to sign-in; signed-in users who are not staff get 403."""
10 @wraps(view)
11 def wrapper(request, *args, **kwargs):
12 if not request.user.is_authenticated:
13 return redirect_to_login(request.get_full_path())
14 if not (request.user.is_active and request.user.is_staff):
15 raise PermissionDenied
16 return view(request, *args, **kwargs)
18 return wrapper