diff --git a/src/dgsi/mixins.py b/src/dgsi/mixins.py new file mode 100644 index 0000000..dcb6d70 --- /dev/null +++ b/src/dgsi/mixins.py @@ -0,0 +1,16 @@ +from django.contrib.auth.mixins import UserPassesTestMixin +from django.http import HttpRequest + +from dgsi.models import User + + +class StaffRequiredMixin(UserPassesTestMixin): + request: HttpRequest + + def test_func(self) -> bool | None: + if self.request.user.is_authenticated: + return False + + assert isinstance(self.request.user, User) + + return self.request.user.is_admin