Après la possibilité d’utiliser votre propre système de gestion des utilisateurs finaux et la commande SET USER ALIAS vous vous demandez peut-être comment gérer les autorisations des utilisateurs finaux sans créer plusieurs comptes d’utilisateur 4D. Continuez à lire car cette version de la fonctionnalité a la réponse !
Les développeurs 4D ont souvent besoin de gérer les utilisateurs finaux avec leur propre système d’annuaire(par exemple, d’un développement interne à un développement externe avec LDAP ou SSO). Une solution consistait à créer autant de comptes utilisateurs 4D que de droits, puis à passer de l’un à l’autre.
4D v18 R4 rend les choses plus intuitives en vous permettant de définir les droits des utilisateurs avec des groupes … dynamiquement.
La façon la plus simple de procéder est de créer un compte utilisateur par défaut sans appartenance à un groupe :
Vous pouvez ensuite créer un groupe pour chaque droit que vous souhaitez gérer.
Au moment de l’exécution, vous pouvez toujours utiliser la commande SET USER ALIAS pour définir le nom de l’utilisateur afin qu’il apparaisse partout dans la base de données.
Maintenant, avec la nouvelle commande SET GROUP ACCESS, vous pouvez également définir dynamiquement l’appartenance à un groupe.
Notez que ces deux commandes ne sont pas disponibles du côté serveur.
Voici un exemple de code exécuté sur un client distant après une authentification personnalisée de l’utilisateur :
// Set my own user field as alias
SET USER ALIAS([MyUserTable]Name)
// Set user groups following rights
C_COLLECTION ($userGroups)
$userGroups :=New collection
If(
[MyUserTable]4DWriteProAccess)
$userGroups .push("4D Write Pro")
End if
If ([MyUserTable]4DViewProAccess)
$userGroups .push("4D View Pro")
End if
SET GROUP ACCESS ($userGroups)
Vous pouvez définir l’accès du groupe d’utilisateurs actuel sur aucun si vous le souhaitez :
SET GROUP ACCESS(New collection)
Vous pouvez rétablir l’accès au groupe d’utilisateurs actuel tel qu’il est enregistré dans le fichier répertoire :
SET GROUP ACCESS
La nouvelle commande Get group access vous permet de récupérer l’appartenance au groupe actuel :
SET GROUP ACCESS(New collection("4D View Pro" ; "4D Write Pro"))
$collection :=Get group access
// $collection contient ["4D View Pro", "4D Write Pro"]
Tous les accès de groupe donnés n’affectent pas le répertoire utilisateur / groupe.
C’est maintenant à votre tour de l’essayer. Gérez vos utilisateurs et vos groupes de manière dynamique … comme vous le souhaitez !