Django admin - restringir o acesso por usuário
-
06-07-2019 - |
Pergunta
Eu queria saber se a página django administrador pode ser usado para usuários externos.
Vamos dizer que eu tenho esses modelos:
class Publisher(models.Model):
admin_user = models.ForeignKey(Admin.User)
..
class Publication(models.Model):
publisher = models.ForeignKey(Publisher)
..
Eu não sei exatamente o que admin_user seria - talvez ele poderia ser o e-mail de um usuário admin
?De qualquer forma. Existe uma maneira permitir que um usuário admin apenas adicionar / editar / Publicações de exclusão cujo editor é associado a esse usuário admin?
Obrigada! -Chris
Solução
Se você precisa de permissões mais refinado em seus próprios aplicativos, deve-se notar que a aplicação administrativa do Django suporta este, através dos métodos seguintes que pode ser substituído em subclasses de ModelAdmin. Note-se que todos esses métodos receber o objeto HttpRequest atual como um argumento, permitindo a personalização baseada no usuário específico autenticado:
-
queryset(self, request):
deve retornar um QuerySet para uso na lista do administrador de objetos para um modelo. Os objetos não presentes neste QuerySet não será exibido. -
has_add_permission(self, request):
deve retornar true se a adição de um objeto é permitido, False contrário. -
has_change_permission(self, request, obj=None):
deve retornar true se a edição obj é permitido, False contrário. Se obj é None, deve retornar verdadeiro ou falso para indicar se a edição de objectos deste tipo é permitida em geral (por exemplo, se False será interpretada no sentido de que o usuário atual não tem permissão para editar qualquer objeto deste tipo). -
has_delete_permission(self, request, obj=None):
deve retornar true se apagar obj é permitido, False contrário. Se obj é None, deve retornar verdadeiro ou falso para indicar se os objetos exclusão deste tipo é permitido em geral (por exemplo, se False será interpretada no sentido de que o usuário atual não tem permissão para excluir qualquer objeto deste tipo).
Outras dicas
django administrador pode, até certo ponto, ser restrito. Para um determinado usuário, em primeiro lugar, eles devem ter direitos de administrador, a fim de entrar no site de administração. Qualquer pessoa com este conjunto de bandeira pode visualizar todas as páginas de administração. Se você quiser restringir a visualização, você está sem sorte, porque isso simplesmente não é implementada. A partir daí, cada usuário tem uma série de permissões, para criar, atualizar e excluir, para cada modelo no site de administração. A maneira mais conveniente de lidar com isso é criar grupos, e depois atribuir permissões aos grupos.
Eu vejo a resposta de Chris foi útil para a questão do tempo foi perguntado.
Mas agora é quase de 2016 e eu acho que fica mais fácil para permitir o acesso restrito de Django Admin panel
ao usuário final.
sistema de autenticação do Django fornece:
Grupos.: Uma forma genérica de aplicar labels e permissões para mais de um usuário
Onde se pode adicionar permissões específicas e aplicar esse grupo ao usuário via painel de administração ou com os códigos da escrita.
Depois de adicionar usuários a esses grupos específicos, necessidade de administração para ativar o sinalizador is_staff
para esses usuários.
Usuário será capaz de acesso restrito modelos registrados em administração. Espero que isso ajude.