Как ограничить доступ к файловому браузеру grappelli, используя разрешения авторизации django? - PullRequest
1 голос
/ 03 апреля 2012

Мне нужно ограничить доступ пользователей к файловому браузеру, используя разрешения. Например, только пользователи с разрешением «can_upload_files» должны иметь возможность видеть Filebrowser на моей настраиваемой панели инструментов.

Возможно ли это?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 05 апреля 2012

Если вы хотите просто скрыть группу «Управление мультимедиа» из своей панели инструментов, вы можете использовать следующее условие в своем коде 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 голосов
/ 02 августа 2016

Это может быть сделано промежуточным программным обеспечением. Что-то вроде:

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, но вы можете легко проверить наличие определенного разрешения ...

...