Creation User et role par défaut

Bonjour à tous !

Je voudrais pouvoir créer un utilisateur depuis mon appli mobile dans Directus. Pour pouvoir gérer correctement mes permissions, je dois donc affecter cet utilisateur à un rôle.
C’est ici que je bloque, en effet, intégrer l’id de mon rôle dans ma requête http offrirait la possibilité de modifier à la volée le rôle affecté. Je voudrais donc définir un rôle par défaut, pour y affecter tous les utilisateurs crée, sans avoir à préciser le rôle.
Malgré mes recherches, je ne trouve rien qui irait en ce sens …
Est-ce que quelqu’un se serait déjà penché sur la question ?

Merci d’avance :smiley:

Mathis

Hello,

Comment souhaite tu ajouter tes utilisateurs ?

Si tu est auto-hébergé, en utilisant SSO tu peux maintenant permettre l’inscription des utilisateurs avec un role défini dans la config.

En utilisant les droits public (ou via un token permanant) sur l’ajout d’un utilisateur tu peux utiliser une règle de validation du champ, tu devra toujours spécifier un role (sauf si tu le met dans les champs prédéfinis).

Autrement en te salissant les mains un peu plus tu peux créer un Endpoint ou passer par un Flux.

Si par contre tu souhaite utiliser la fonction d’invitation, la je sèche, je ne sais pas quelles autorisations elle utilise.

Après faut pas oublier que tes données sont normalement chiffrées par le protocole HTTPS.

Salut @isanforc ,
merci pour ta réponse, j’ai un formulaire classique dans mon appli mobile et je souhaite, via un appel API, créer un compte à cet utilisateur dans Directus. Dans mon idée, je faisais un appel POST sur /users avec mes attributs de compte en paramètre. L’appel est donc non authentifié (public).
Malgré HTTPS, un utilisateur malveillant n’aura pas de mal à modifier l’id du role dans la requete et se retrouver admin, puisque sur son réseau il verra les requêtes en claire.
Je ne suis pas auto-hebergé, donc pas de SSO possible.
Je vais me pencher sur les règles de validation lors de l’ajout, merci pour la piste :smiley:

je m’en suis donc sorti avec un preset du champ role. Ca n’est pas l’ideal puisque le param « role » peut toujours etre précisé dans l’appel et écrasera le preset. Pas terrible en terme de sécurité meme si j’utilise des UID et non des id auto-incrémentés (donc plus compliqué de trouver la valeur du role admin).
Si vous avez d’autres conseils ou idée je suis preneur :smiley:

J’ai peut être une solution qui peut répondre a ton problème que je réutiliserai certainement dans le futur.

J’ai créé un rôle inscription (l’idée étant de ne pas ouvrir mon API publiquement).
Dans ce rôle je n’autorise que l’ajout d’utilisateur et rien d’autre en mode personnalisé :

  • J’autorise uniquement les champs suivants :
    • Prénom
    • Nom
    • Email
    • Mot de passe

Et aucun autre champ
image

Dans les préréglages de champ j’indique l’ID du rôle a définir
image

J’ai ensuite créé un utilisateur « inscription » avec le rôle d’inscription, c’est lui qui pourra ajouter des utilisateurs.
J’ai généré un Token pour mon utilisateur (pour l’identification directe sans mot de passe).

Ensuite avec POSTMAN j’ai testé l’ajout en utilisant le token de l’utilisateur inscription :
image

Ce body fonctionne très bien, mon utilisateur est créé avec mon rôle par défaut.

Si jamais j’indique un rôle dans le body :
image
Ca me retourne l’erreur suivante :
image

ATTENTION : Lorsque l’ajout de l’utilisateur a fonctionné le body de la réponse est vide.

Si tu essaie de rajouter un autre utilisateur avec le même email :
image

Par contre ça ne t’empêche pas de créer un utilisateur sans email, du coup une petite règle de validation des champs :
image
RegExp :
image
^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$

J’ai remarqué que si tu ne spécifie pas le champ email dans ton body Directus ne le prend pas en compte et crée le compte sans email malgré les règles de validation.
J’ai donc rajouté des champs prédéfinis pour les email et mot de passe avec une valeur vide par défaut, ces valeurs seront réécrite avec le valeurs de ton body au moment de la requête.
image

2 « J'aime »