1

権限を使用してファイルブラウザへのユーザーアクセスを制限する必要があります。たとえば、「can_upload_files」という権限を持つユーザだけが、私のカスタムダッシュボードでFilebrowserを見ることができます。djangoの認証許可を使用してgrappelliファイルブラウザへのアクセスを制限する方法は?

これは可能ですか?

ありがとうございます!

+0

どのカスタムダッシュボードを使用していますか?管理テンプレートを変更し、そこにファイルブラウザへのリンクを条件付きで追加することができます。ログインしたユーザーにアクセス権がない場合、リンクは表示されません。 –

答えて

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 adminの他のモデル、リンクなどへのアクセスを制限するのにも適しています。ありがとう! – zzart

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') 

は私がsuperuserをチェックしています。この例では、あなたのsettings.py

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

にミドルウェアをアクティブにすることを忘れないでくださいしかし、あなたは簡単に特定の権限をチェックすることができ ...

関連する問題