1

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

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

Спасибо!

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

Не забудьте активировать промежуточное в вашем settings.py

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

В этом примере я проверка на superuser, но вы можете легко проверить для конкретного разрешения ...

Смежные вопросы