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但你可以很容易地检查特定权限...

相关问题