Puis-je utiliser la vérification des autorisations de l'application Auth dans un modèle dans Django? (Je souhaite afficher un formulaire simple à la fin du modèle pour les utilisateurs privilégiés)
Et plus important encore, dois-je le faire ou n'est-ce pas la "voie Django"?
Si vous cherchez à vérifier les autorisations dans les modèles, le code suivant suffira:
{% if perms.app_label.can_do_something %}
<form here>
{% endif %}
Où modèle fait référence au modèle pour lequel l'utilisateur a besoin d'autorisations pour voir le formulaire.
Reportez-vous à https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions pour plus d'exemples.
Les autorisations de l'utilisateur actuellement connecté sont stockées dans la variable de modèle
{{ perms }}
(Cela nécessite l'activation du processeur de contexte suivant: Django.contrib.auth.context_processors.auth
)
Si vous avez besoin de plus de granularité dans la vérification des perms (sur un objet particulier par exemple), consultez cette extension: http://Django-authority.readthedocs.org/en/latest/check_templates/
Testé sur Django 2.0 +
Si vous souhaitez voir toutes les autorisations de l'utilisateur connecté, sur votre modèle (.html), imprimez:
{{ perms.app_name }}
Ou
{{ perms }}
Afin de vérifier si l'utilisateur a l'autorisation, utilisez:
{% if perms.app_name.change_model_name_lower_cased %}
Par exemple:
{% if perms.Utilization.change_invoice %}
Ici: L'utilisation est le nom de mon application. La facture est un nom de modèle.
Notez qu'en général, il y aura 4 types d'autorisations:
De plus, si vous voulez voir toutes les autorisations d'un utilisateur en raison des groupes auxquels il appartient, lancez Django Shell ...
user = User.objects.get(username='somename')
user.get_group_permissions()
Ici, toutes les autorisations répertoriées sont dues aux groupes auxquels il appartient.