Gestion des utilisateurs
L'API​
Isotope serveur présente des points d'entrée permettant de gérer les utilisateurs enregistrés dans la base de données de l'application.
SQL​
Les utilisateurs sont stockés dans la table is_users de la base de données de l'applciation.
Un utilisateur se connecte via un couple identifiant/mot de passe (ou via le module de connexion Google,
cf. Connexion).
Le mot de passe est chiffré via la librairie BCryptPasswordEncoder de Spring Security,
qui utilise la fonction de hachage BCrypt avec un salt aléatoire de complexité 1024
(configuration par défaut).
Enfin, deux utilisateurs ne peuvent pas partager le même identifiant ou la même adresse e-mail, l'adresse e-mail étant utilisée par le module de récupération de mot de passe.
Suppression vs. désactivation​
Les applications pouvant faire référence à des entrées de la table is_users, les utilisateurs
ne peuvent pas être supprimés de la table. Isotope propose à la place une fonctionnalité de
désactivation/restauration des utilisateurs, par le biais d'une colonne disabled dans
la table is_users, qui renseigne si l'utilisateur est désactivé.
Un utilisateur désactivé ne peut plus se connecter à l'application, mais peut être réactivé par un administrateur via un appel à l'API.
Controller​
La classe UserController met a disposition les points d'entrée suivants:
GET /api/admin/users?showDisabled={value}renvoie l'ensemble des utilisateurs enregistrĂ©s. Sishowdisabledest set Ătrue, on affiche Ă©galement les utilisateurs dĂ©sactivĂ©s.GET /api/admin/users/{id}renvoie les informations de l'utilisateur d'IDid.POST /api/admin/userscrĂ©e un nouvel utilisateur avec les donnĂ©es du formulaire passĂ© dans le body.PUT /api/admin/usersmet Ă jour un utilisateur existant avec les donnĂ©es du formulaire passĂ© dans le body.DELETE /api/admin/users/{id}dĂ©sactive l'utilisateur d'IDidPOST /api/admin/users/{id}/restorerestaure l'utilisateur dĂ©sactivĂ© d'IDid
Le controller est uniquement accessible aux utilisateurs authentifiés ayant un rôle associé
Ă la fonction acces_users.
Interface​
Isotope client met à disposition un composant React permettant de gérer les utilisateurs
d'une application: <UserManagement />.
Liste des utilisateurs​
Le corps du composant est constitué d'une liste qui affiche par défaut l'ensemble des utilisateurs actifs de l'application avec diverses informations. Au dessus, un switch permet d'afficher également les utilisateurs désactivés. A la droite de chaque ligne se trouve un menu qui permet d'effectuer les actions suivantes:
- Modifier : pour les utilisateurs actifs, affiche une popin permettant de modifier l'utilisateur
- Désactiver : permet de désactiver l'utilisateur
- Restaurer : pour les utilisateurs inactifs, permet de réactiver l'utilisateur
Popin ajout d'un utilisateur​
Lorsque l'utilisateur clique sur le bouton flottant (+) en bas à droite de l'écran, cela ouvre un formulaire dans une popin modale permettant d'ajouter un utilisateur.
Le formulaire contient les champs suivants (* = obligatoire):
- Identifiant* : le login que l'utilisateur devra utiliser pour se connecter
- Mot de passe* : associé au login pour la connexion
- Confirmation* : confirmation du mot de passe
- Nom*
- Prénom*
- Mail* : adresse e-mail de l'utilisateur, utilisée par le module de récupération de mot de passe
- Téléphone
- Société
- Profil
A l'enregistrement, si l'identifiant ou l'adresse e-mail existe(nt) déjà dans la base de données (mais sont par exemple associés à un utilisateur désactivé), une popin d'erreur s'affiche pour en informer l'utilisateur.
Popin de modification d'un utlisateur​
Lorsque l'utilisateur sélectionne l'action "Modifier" dans le menu d'un utlisateur, une popin avec un formulaire de modification.
Celle-ci possède les mêmes champs que la popin d'ajout, à la différence que les champs "Mot de passe" et "Confirmation" ne sont pas obligatoires. Si non renseignés, le mot de passe de l'utlisateur modifié reste inchangé.
Et tout comme pour la popin d'ajout, si à l'enregistrement l'identifiant ou l'adresse e-mail existe(nt) déjà , une popin d'erreur en notifie l'utilisateur.