# -*- coding: utf-8 -*-
from django.contrib.auth.mixins import (
    AccessMixin,
    LoginRequiredMixin as LoginRequiredMixInBase,
    PermissionRequiredMixin as PermissionRequiredMixinBase,
)
from django.utils.decorators import method_decorator
from django.views.decorators.cache import never_cache


@method_decorator(never_cache, name="dispatch")
class LoginRequiredMixin(LoginRequiredMixInBase):
    pass


@method_decorator(never_cache, name="dispatch")
class PermissionRequiredMixin(PermissionRequiredMixinBase):
    login_url = "/login"


@method_decorator(never_cache, name="dispatch")
class StaffOnlyMixin(AccessMixin):
    """
    Verify the current user is staff.
    """

    def dispatch(self, request, *args, **kwargs):
        if not request.user.is_staff:
            return self.handle_no_permission()
        return super().dispatch(request, *args, **kwargs)