password_reset - loginview django
Django is_staff author decorator (3)
Estoy tratando de limitar el acceso a las páginas usando 2 niveles de usuario. Superusuario y administrador El súper usuario es un usuario regular de Django con ''is_superuser'' asignado. El usuario administrador también es un usuario regular con solo el permiso ''is_staff'' asignado.
El problema es que cuando uso este decorador para un usuario administrador, no pasa la prueba:
@permission_required(''is_staff'')
def my_view(....)
@permission_required(''is_staff'')
devuelve falso para usuarios anónimos. (correcto)
@permission_required(''is_superuser'')
solo devuelve verdadero para superusuarios (correcto)
@permission_required(''is_staff'')
devuelve FALSE para usuarios con la permanente ''is_staff'' asignada. (incorrecto).
¿Alguna idea?
Para vistas basadas en clase, UserPassesTestMixin es conveniente, por ejemplo
class ImportFilePostView(LoginRequiredMixin, UserPassesTestMixin):
def test_func(self):
return self.request.user.is_staff
...
para Vistas basadas en clase, puede agregar permission_required(''is_staff'')
a urls.py
:
from django.contrib.auth.decorators import permission_required
url(r''^your-url$'', permission_required(''is_staff'')(YourView.as_view()), name=''my-view''),
is_staff
no es un permiso, así que en lugar de permission_required
podrías usar:
@user_passes_test(lambda u: u.is_staff)
o
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required