17 lines
800 B
Python
17 lines
800 B
Python
from django.shortcuts import redirect
|
|
from django.urls import reverse
|
|
from django.http import HttpRequest
|
|
|
|
class RedirectNonSuperuserFromAdminMiddleware:
|
|
def __init__(self, get_response):
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request: HttpRequest):
|
|
# Se l'utente è loggato, non è superuser e prova ad andare in /admin/... o qualsiasi altro path
|
|
if hasattr(request, "user") and not request.user.is_superuser:
|
|
if hasattr(request.user, "student") and not "/user/" in request.path:
|
|
return redirect("/user/") # redirect automatico
|
|
elif hasattr(request.user, "instructor") and not "/staff/" in request.path:
|
|
return redirect("/staff/") # redirect automatico
|
|
return self.get_response(request)
|