Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

allowing only super user login

Tags:

I have written a django page that requires only super users to login. So I have added

foo_view = staff_member_required(foo_view)

but it doesn't cut, now I can control only allowing staff marked users to login but this doesn't cut. I have tried something like

def foo_view(request):
       if not request.user.is_superuser:
           #render some "not allowed page"
       #else render the page

but it doesn't seem to help as giving me errors.

like image 847
Hellnar Avatar asked Sep 10 '09 08:09

Hellnar


2 Answers

Try:

from django.contrib.auth.decorators import user_passes_test

def foo_view(request):
    # ...
foo_view = user_passes_test(lambda u: u.is_superuser)(foo_view)

Or (with Python >= 2.4):

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)
def foo_view(request):
    # ...
like image 192
Dominic Rodger Avatar answered Nov 27 '22 14:11

Dominic Rodger


The code you suggested works perfect for me, I used it in many projects since Django 1.4:

from django.contrib.auth.decorators import login_required
from django.http import HttpResponse

@login_required
def foo_view(request):
   if not request.user.is_superuser:
       return HttpResponse('The user is not superuser')

   # Do whatever you need to do

This code works perfect for me since Django 1.4 to 1.7 at least.

like image 25
AlvaroAV Avatar answered Nov 27 '22 13:11

AlvaroAV



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!