Documentation Frappe Framework

Frappe Framework

Types de permissions

Les types de permissions personnalisés ajoutent des droits au-delà de read, write, create, delete et submit. Cette page montre comment en créer un, le vérifier dans le code et l’attribuer aux rôles.

2 min de lectureMis à jour le Source : docs.frappe.io

À quoi servent les types de permissions personnalisés

À retenir

Cette fonctionnalité est disponible à partir de la v16.

Les types de permissions personnalisés (Custom Permission Types) permettent de créer des drapeaux de permission au-delà de ceux intégrés (read, write, create, delete, submit). Utilisez-les pour des permissions liées à une action précise : « approuver un enregistrement », « télécharger un fichier », « se faire passer pour un utilisateur », etc.

Fonctionnement

Le processus se déroule en trois étapes :

  1. Le développeur crée le type de permission en mode développeur pour un DocType.
  2. Le développeur ajoute les vérifications de permission dans le code, à l’endroit où l’action est exécutée.
  3. Le System Manager attribue la permission aux rôles dans l’interface du bureau (Desk).

Le type de permission est enregistré comme fixture et livré avec votre app.

Exemple : créer une permission « approve » sur Invoice

Étape 1 : créer le type de permission (développeur)

  1. Activez le mode développeur et connectez-vous en tant qu’Administrator.
  2. Créez un nouvel enregistrement Permission Type.
  3. Renseignez Perm Type avec approve et DocType avec Invoice.
  4. Enregistrez.

Le type de permission est créé et sera exporté avec votre app.

Étape 2 : ajouter les vérifications dans le code (développeur)

Dans le contrôleur Invoice, ou dans les fonctions qui gèrent les approbations, vérifiez la permission :

python
@frappe.whitelist()
def approve_invoice(invoice_name):
    invoice = frappe.get_doc("Invoice", invoice_name)
    if not frappe.has_permission(invoice, "approve"):
        frappe.throw("Not permitted to approve", frappe.PermissionError)
    invoice.approval_status = "Approved"
    invoice.save()

Vous pouvez aussi vérifier sans lever d’erreur :

python
if frappe.has_permission(invoice, "approve"):
    # show approve button on frontend

Étape 3 : attribuer la permission aux rôles (System Manager)

Une fois votre app installée, les System Managers attribuent la permission aux rôles :

  1. Ouvrez le Role Permission Manager.
  2. Sélectionnez le DocType Invoice.
  3. Pour chaque rôle, cochez ou décochez la colonne « Approve », comme pour les autres permissions.
  4. La permission s’applique désormais à tous les utilisateurs ayant ce rôle.

C’est tout : les utilisateurs disposant de la permission « approve » peuvent effectuer l’action, les autres reçoivent une erreur.

Vérifier la permission

Utilisez frappe.has_permission() dans votre code Python :

python
# Check document-level permission
if frappe.has_permission(invoice_doc, "approve"):
    # User can approve this invoice

# Check DocType-level permission
if frappe.has_permission("Invoice", "approve"):
    # User can approve any invoice
AppelPortée
frappe.has_permission(invoice_doc, "approve")Permission au niveau du document : l’utilisateur peut approuver cette facture
frappe.has_permission("Invoice", "approve")Permission au niveau du DocType : l’utilisateur peut approuver n’importe quelle facture

Pages liées