1

我需要限制用戶使用權限訪問filebrowser。例如,只有擁有「can_upload_files」權限的用戶才能在自定義儀表板中看到Filebrowser。如何使用django auth權限限制對grappelli filebrowser的訪問?

這可能嗎?

謝謝!

+0

你在使用什麼自定義儀表板?您可以修改管理模板並有條件地向該文件瀏覽器添加鏈接。如果登錄的用戶沒有訪問權限,則不顯示該鏈接。 – 2012-04-03 17:13:39

回答

3

如果你想要完成的事情是簡單地隱藏你的儀表板「媒體管理」組中,可以使用以下條件在dashboard.py代碼:

if context.get('user').has_perm('accounts.can_upload_files'): 
    self.children.append(modules.LinkList(
     _('Media Management'), 
     column=2, 
     children=[ 
      { 
       'title': _('FileBrowser'), 
       'url': '/admin/filebrowser/browse/', 
       'external': False, 
      }, 
     ] 
    )) 

注意,這實際上不會限制訪問FileBrowser,只需隱藏鏈接。

+0

這也有利於限制訪問其他模型,鏈接等在Django管理。謝謝! – zzart 2013-04-25 09:11:57

0

這可以通過中間件完成。喜歡的東西:

from django.http import HttpResponseForbidden 

class MediaLibraryAccess(object): 
    def process_request(self, request): 
     if not request.path.startswith('/admin/media-library'): 
      return None 
     if request.user and request.user.is_superuser: 
      return None 
     return HttpResponseForbidden('Access Forbidden') 

不要忘記激活了中間件,您settings.py

MIDDLEWARE_CLASSES = (
     ... 
     "myapp.middleware.MediaLibraryAccess", 
) 

在這個例子中,我檢查superuser但你可以很容易地檢查特定權限...