diff --git a/README.md b/README.md index de5d0b43b3d06871d838d569f61be735af9be3b4..8f867a95b3caf71af8f32f51cf0b00850bb82f52 100644 --- a/README.md +++ b/README.md @@ -71,9 +71,27 @@ La démo est accessible avec l'url https://sdk-go.127.0.0.1.nip.io - `./web` est le répertoire où est stockée l'application front-end et publié par le serveur back-end. ### Utilisateurs et droits +**Utilisateurs techniques** +Les utilisateurs techniques permettent de s'authentifier à l'application et d'accéder aux API en fonction du rôle de l'utilisateur qui définit alors ses droits. +La source de création et d'authentification des utilisateurs technique est double. Elle peut soit provenir directement de la base de donnée locale d'utilisateurs de l'application (./data/users.db) ou d'un fournisseur d'identité avec le protocole OAuth2. + +Dans le cas d'une connexion avec OAuth2, l'utilisateur est crée dans la base locale d'utilisateurs avec son identifiant OAuth2 qui permet de faire le lien avec l'utilisateur technique. Dans le cas d'une connexion avec OAuth2, l'utilisateur doit obligatoirement faire parti d'un groupe applicatif autorisé (cf variable d'envrionnement ADMIN_GROUP et CLIENT_GROUP) Un rôle différent est attribué automatiquement à l'utilisateur en fonction de son groupe. + +> ATTENTION : le rôle "ADMIN" est obligatoire dans l'application car permet de gérer les utilisateurs et leurs droits. Sans celui-ci est sans utilisateurs ayant ce rôle dans la base, il est impossible de créer de nouveaux utilisateurs ! + +**Utilisateurs applicatif** +Les utilisateurs applicatifs sont facultatifs, ils permettent d'affecter des données à un utilisateur (ex : un client peut possèder un ou plusieurs comptes) Les utilisateurs applicatifs sont créé dans la base locale de données (./data/test.db) avec l'identifiant de l'utilisateur technique qui permet de faire la jointure entre un utilisateur applicatif et un utilisateur technique. ### Tests +**Tests unitaires** +Les tests unitaires sont définis dans le répertoire de chaque paquet (ex : `auth-test.go` dans le package `auth`) + +**Tests d'intégration** +Les tests d'intégration sont dans le répertoire `./rootmux`. +Les tests métiers (ex : mettre à jour le montant sur le compte bancaire d'un client lorsqu'il effectue une opération) sont définis dans le fichier `rootmux_test.go`. +Les tests concernant les droits et les réponses attendues par utilisateur (ex : un banquier n'a accès qu'aux clients qui lui sont rattachés et pas aux autres) sont écrits dans des fichiers différent par type de droits différent (ex : `banker_test.go` pour tester les droits des banquiers) + ## Démarer un projet à partir du SDK Il faut forker le dépôt SDK-GO @@ -85,7 +103,7 @@ Supprimer le répertoire pkg. Ceci permet d'utiliser les dépendances `pkg` du d Supprimer les fichiers `admin_test.go`, `banker_test.go` et `client_test.go` qui sont spécifiques à l'application de démonstration. Toutefois ces tests peuvent être adaptés à votre application pour tester les droits d'accès en fonction des rôles des utilisateurs. Si vous souhaitez partir de l'interface web du kit, supprimer simplement les répertoires `web/components/bankerPage` et `web/components/clientPage` qui sont spécifiques à la démo. -Sinon supprimer tout le contenu tout le contenu du répertoire `web` pour repartir de zéro, il faudra alors redévelopper l'interface de gestion des utilisateurs. +Sinon supprimer tout le contenu du répertoire `web` pour repartir de zéro, il faudra alors redévelopper l'interface de gestion des utilisateurs. ### Nommage de l'application @@ -148,7 +166,7 @@ Dans le fichier `web/assets/brand/manifest.js`, remplacer : ### Définition du modèle -C'est dans le fichier `models.go` que doit être définit le modèle de donnée de l'application. +C'est dans le fichier `models.go` que doit être définit le modèle de donnée de l'application et les réponses aux API. > Ce qui suit sont des recommandations :