Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Interface

Personnaliser l'interface et les permissions

Personnaliser l'interface et les permissions

Gestion des permissions documentaires et de champs

Dokos permet désormais de lire les permissions documentaires et les permissions au niveau des champs directement depuis le client, sans dépendre d'un boot initial. Cette fonctionnalité est particulièrement utile pour les applications construites sur @framework/ui qui n'ont pas accès à l'environnement desk traditionnel.

Fonctionnement technique

Trois composables principaux sont impliqués dans cette gestion :

  1. useUserRoles : Récupère les rôles de l'utilisateur connecté et partage cette ressource entre différents composants.
  2. useDoctypeMeta : Transporte désormais les lignes DocPerm de la métadonnée, qui déterminent les accès aux différents niveaux de permission.
  3. useDocPermissions : Croise les informations des deux précédents composables pour déterminer :
    • Les droits au niveau du document (via docinfo.permissions calculé par le serveur)
    • Les accès au niveau des champs (via les lignes DocPerm)

La fonction mapField est également exportée pour permettre la construction de nœuds individuels en dehors du contexte FormLayout.

Comportement en cas de chargement

Le système échoue de manière ouverte pendant le chargement. Cela signifie que :
  • Tant que les rôles et les métadonnées ne sont pas complètement chargés, fieldAccess retourne un droit d'écriture par défaut.
  • Cette approche évite qu'un champ n'apparaisse vide alors que le serveur pourrait finalement autoriser son affichage.
  • L'application réelle des permissions reste côté serveur : même si un champ apparaît modifiable, le serveur refusera toute écriture non autorisée.

Configuration requise

Pour activer cette fonctionnalité, un endpoint a été ajouté au niveau du modèle User :

@frappe.whitelist()
def get_current_user_roles() -> list[str]:
    """Retourne les rôles de l'utilisateur en session, pour les clients sans desk."""
    return frappe.get_roles()

Exemple d'utilisation

Dans un formulaire personnalisé où vous souhaitez afficher dynamiquement certains champs en fonction des permissions :

import { useDocPermissions } from '@framework/ui';

// Dans votre composant
const { fieldAccess } = useDocPermissions(doctype);

// Vérifier l'accès à un champ spécifique
const canEditField = fieldAccess('nom_du_champ').write;

Impact sur les permissions existantes

Cette fonctionnalité n'affecte pas les permissions existantes configurées dans le système. Elle permet simplement :

  • Une réactivité accrue dans l'interface utilisateur
  • Une meilleure expérience utilisateur en masquant dynamiquement les éléments non accessibles
  • Une architecture plus flexible pour les applications front-end modernes
Pour les développeurs créant des interfaces personnalisées, cette fonctionnalité permet de :
  • Construire des formulaires qui s'adaptent dynamiquement aux permissions de l'utilisateur
  • Éviter les requêtes inutiles vers le serveur pour vérifier les permissions
  • Maintenir une cohérence visuelle avec l'interface standard de Dokos

Gestion des utilisateurs

Types d'utilisateurs et groupes

Dokos vous permet de gérer finement vos utilisateurs et leurs permissions :

Groupes d'utilisateurs

L'intérêt principal des groupes est de permettre des assignations collectives. Par exemple, si vous avez plusieurs comptables, vous pouvez :

  • Attribuer des tâches à l'ensemble du groupe comptabilité
  • Mentionner le groupe dans les commentaires avec @nomdugroupe pour notifier tous ses membres

Types d'utilisateurs

Cette fonctionnalité permet d'accorder des autorisations spécifiques à certaines catégories d'utilisateurs.

Suivi des activités

Dokos offre deux journaux complémentaires :

  • Journal d'activité : Retrace l'ensemble des actions réalisées sur votre plateforme
  • Journal d'accès : Enregistre les connexions et déconnexions des utilisateurs

Rôles et autorisations

Comprendre les rôles

Un rôle est un ensemble d'autorisations groupées qui définit ce qu'un utilisateur peut faire dans le système.

Configuration par défaut

Par défaut, un nouvel utilisateur reçoit le rôle de "client", lui donnant uniquement accès au portail. Vous pouvez ensuite lui attribuer des rôles supplémentaires.

Structure des autorisations

Pour chaque rôle, vous définissez :

  • Les types de documents concernés
  • Les actions autorisées (lecture, écriture, impression, annulation, validation)

Par exemple, un utilisateur avec le rôle "acheteur" pourra créer des contacts, gérer des adresses et des commandes fournisseurs, mais aura uniquement un droit de lecture sur les exercices fiscaux.

Niveaux d'autorisation

Chaque champ sur vos formulaires est associé à un niveau d'autorisation (de 0 à 9 par défaut), permettant une gestion plus fine des accès :

Exemple pratique : Dans une demande de congés, certains éléments peuvent être réservés au manager (niveau 1). De même, un employé qui saisit ses notes de frais ne verra pas la partie comptable, accessible uniquement aux comptables disposant d'une autorisation de niveau supérieur.

Personnalisation des rôles

Vous avez la flexibilité de :

  • Créer vos propres rôles
  • Désactiver les rôles standard
  • Dupliquer des rôles existants pour les adapter

Bonne pratique : Pour des modifications importantes, il est recommandé de désactiver les rôles standard et de créer vos propres rôles personnalisés. Cela évite que vos personnalisations ne soient écrasées lors des mises à jour.

Profils de rôle

Les profils de rôle vous permettent de combiner plusieurs rôles pour créer des ensembles cohérents d'autorisations. Par exemple, dans l'équipe RH, vous pourriez avoir :

  • Un profil "Responsable RH" avec des droits étendus
  • Un profil "Utilisateur RH" avec des droits plus limités comme pour les stagiaires

Un utilisateur peut se voir attribuer plusieurs profils selon ses responsabilités.

Rôles spéciaux

  • Responsable système : Accès complet à l'administration du système
  • Invité : Utilisé pour les utilisateurs non connectés

Restriction par espace de travail

Les profils de module vous permettent de contrôler quels modules sont visibles pour chaque utilisateur :

Important : Les profils de module contrôlent uniquement la visibilité des espaces de travail dans la barre latérale, mais n'affectent pas les autorisations. Un utilisateur peut toujours accéder à des documents via la recherche s'il dispose des autorisations nécessaires.

Cette fonctionnalité puissante vous permet de limiter l'accès des utilisateurs à certaines données.

Exemple concret

Imaginons que votre entreprise gère deux sociétés : Dokos et Mappemonde. Si Raphaëlle est salariée de Dokos, vous pouvez restreindre son accès pour qu'elle ne voie que les documents liés à Dokos.

Fonctionnement

Les restrictions s'appliquent automatiquement à tous les documents contenant le champ spécifié (par exemple "société"). Vous pouvez également :

  • Définir une valeur par défaut pour les nouveaux documents créés par l'utilisateur
  • Masquer les descendants (utile dans une structure de holding avec filiales)
  • Appliquer des restrictions par département, centre de coûts, ou même sur des champs personnalisés

Attention : Pour les employés, des restrictions sont créées automatiquement lors de l'association d'un utilisateur à un profil employé. Vérifiez toujours ce paramètre.

Nouvelle interface de gestion des rôles

Dokos propose désormais une interface modernisée pour gérer les rôles et leurs autorisations. Cette nouvelle version centralise toutes les informations relatives à un rôle dans une seule fiche organisée en onglets :

  • Utilisateurs : Liste des utilisateurs ayant ce rôle
  • Documents : Permissions par type de document
  • Rapports : Rapports accessibles
  • Pages : Pages du bureau accessibles
  • Espaces de travail : Espaces visibles
Pour en savoir plus sur cette nouvelle interface, consultez la page Gérer les rôles et autorisations.

Rapport des autorisations par type de document

Le rapport Autorisations utilisateur par type de document (accessible via Paramètres > Utilisateurs et droits) vous offre une vue d'ensemble des droits accordés à chaque utilisateur pour chaque type de document.

Types de permissions affichés

Le rapport présente les types d'autorisations standard (lecture, écriture, création, suppression, validation, annulation, etc.) ainsi que tous les types de permissions personnalisés que vous avez définis dans votre installation.

Cela signifie que si votre organisation a créé des permissions métier sur mesure — par exemple "Approbation RH", "Validation comptable" ou tout autre droit spécifique à votre activité — ils apparaissent désormais dans ce rapport au même titre que les permissions standard.

Comment exploiter ce rapport

  1. Rendez-vous dans Paramètres → Utilisateurs et droits → Autorisations utilisateur par type de document
  2. Filtrez par utilisateur, par rôle ou par type de document selon vos besoins
  3. Consultez l'ensemble des colonnes : chaque colonne correspond à un type de permission (standard ou personnalisé)
  4. Identifiez rapidement qui dispose de quels droits sur quel document

Exemple : Pour vérifier que Raphaëlle (de la société Dokos) dispose bien du droit de validation sur les commandes fournisseurs, filtrez le rapport sur son nom d'utilisateur et repérez la colonne correspondante.

Intérêt pour les permissions personnalisées

Si votre administrateur a défini des types de permissions supplémentaires via les Gestionnaires de rôles ou par personnalisation du framework, ces permissions s'affichent automatiquement dans le rapport sans configuration supplémentaire. Vous n'avez pas besoin de les ajouter manuellement : le rapport les détecte et les intègre à la grille d'analyse.