2013-05-13 6 views
0

У меня есть небольшой вопрос о Django и разрешениях. У меня есть приложение, которое должно быть доступно через пользователя, который находится в определенной организации. например: если пользователь в организации типа 1, он может, иначе он не сможет.Пользовательский доступ к приложению

Должен ли я работать с разрешениями или с помощью специального промежуточного программного обеспечения?

+0

вы можете использовать 'group' и' 'permissions' в django.contrib.auth' – karthikr

+0

организации управляются в приложении, я не хочу использовать группы, чтобы сделать это – billyJoe

ответ

0

Используйте user_passes_test декоратор, чтобы сделать это.

from django.contrib.auth.decorators import login_required,user_passes_test 
def is_auth(u): 
    #u is the request.user 
    if user_auth_for_page(u): 
      return True 
    return False 

def user_auth_for_page(u): 
    #your Authentication function here 
    #if user is in org1 return true 

@user_passes_test(lambda u: is_auth(u),login_url='/home/') 
@login_required 
def page(request): 
    ... 

Опять же, наилучшим подходом было бы использовать его в сочетании с группами джанго.

def is_auth(u,g): 
    l=u.groups.all() 
    for i in l: 
     if i.name==g: 
      return True 
    return False 
@user_passes_test(lambda u: is_auth(u,'admin'),login_url='/home/') 
Смежные вопросы