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

1from functools import wraps 

2 

3from django.contrib.auth.views import redirect_to_login 

4from django.core.exceptions import PermissionDenied 

5 

6 

7def staff_required(view): 

8 """Signed-out users go to sign-in; signed-in users who are not staff get 403.""" 

9 

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) 

17 

18 return wrapper