Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use staff_member_required decorator, but without being redirected to the admin interface?

When I try to use staff_view, I get redirected in the admin authentication interface.

    from django.contrib.admin.views.decorators import staff_member_required

    @staff_member_required
    def staff_view(request..):
        ...

How can I make a custom login, and not getting redirected in the default admin login interface?

like image 466
Kreshnik Avatar asked Aug 02 '12 09:08

Kreshnik


2 Answers

You can use Django's user_passes_test decorator:

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u:u.is_staff, login_url=reverse_lazy('foo'))
def staff_view(request..):
    ...
like image 105
Hedde van der Heide Avatar answered Nov 05 '22 08:11

Hedde van der Heide


It's worth pointing out that staff_member_required is a wrapper around user_passes_test (see source code) and it also accepts a login_url parameter, so you could do:

@staff_member_required(login_url=example_url)
def staff_view(request..):
    ...
like image 33
wasabigeek Avatar answered Nov 05 '22 06:11

wasabigeek