PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
100 stars 102 forks source link

Interface d'inscription #615

Closed jbrieuclp closed 5 years ago

jbrieuclp commented 5 years ago

Bonjour,

Question simple, est-ce qu'une interface de création de compte est dans les tuyaux quelque part ? Je parle d'une interface dans geonature qui est ouverte à n'importe qui souhaite s'inscrire, donc en complément à usershub.

TheoLechemia commented 5 years ago

Bonjour,

Oui c'est dans les tuyaux, du moins du côté UsersHub. Amandine a travaillé sur UsersHub pour faire une API de création d'utilisateur, et de pouvoir y associer des droits. Il y a une ébauche de test ici: https://github.com/PnX-SI/test_client_usershub_api L'interface pour GeoNature reste à faire. Toute PR bienvenue bien-sur :+1:

camillemonchicourt commented 5 years ago

L'ajout de l'API de UsersHub est encore une PR que nous intégrerons prochainement : https://github.com/PnX-SI/UsersHub/pull/80

Une fois celle-ci ajoutée à GeoNature, il sera possible d'ajouter une fonctionnalité de Création de compte sur la page de login de GeoNature (fonction activable en paramètre car certaines instances de GeoNature ne la voudront pas). Lors de la demande de création de compte depuis GeoNature, cela enverra une requête à l'API de UsersHub qui ajoutera l'utilisateur dans le schéma utilisateurs, en l'ajoutant directement à un groupe. Au préalable il faudra donner accès à GeoNature à ce groupe (profil lecteur dans UsersHub) ainsi qu'un CRUVED au niveau de GeoNature. Précisions sur https://github.com/PnX-SI/UsersHub/issues/47

DonovanMaillard commented 5 years ago

Peut être très pratique en effet, notamment pour la gestion des mots de passe. En revanche, est-il prévu un système d'approbation de l'utilisateur par un admin?

Idem, est-ce que ça va permettre à un utilisateur de renouveler son mot de passe en cas d'oubli ou autre? :)

jbrieuclp commented 5 years ago

Pour le moment je pars sur la possibilité de changer ses infos perso (nom, prenom, remarques, identifiant, mail) et changement de mot de passe. -Coté front ca fait 2 interfaces (visu/modif et changement password) -coté back, je crée les routes dans le backend de geonature (car lié à geonature et pas userhub, mais j'utilise les nouveaux models d'Amandine de l'API)

Au niveau de l'inscription, il va y avoir 1 interface (activable par configuration) de creation de compte et 1 de recup de mot de passe (ça c'est sur le papier, j'sais pas comment elle peut se créer avec flask :D)

TheoLechemia commented 5 years ago

Voir ses infos perso (nom, prenom, identifiant...) c'est très UsersHub ça ... Je voyais juste un truc simple: j'ai oublié mon mot de passe et j'en régénère un nouveau. Et un formulaire de création de compte.

coté back, je crée les routes dans le backend de geonature (car lié à geonature et pas userhub, mais j'utilise les nouveaux models d'Amandine de l'API

Les routes ont déjà été faites dans UsersHub. C'est dans cette PR: https://github.com/PnX-SI/UsersHub/pull/80 (non intégrée)

ça c'est sur le papier, j'sais pas comment elle peut se créer avec flask

Elle n'est pas faite en Angular l'interface ?

jbrieuclp commented 5 years ago

C'est peut-être UsersHub, mais pas user tout court. Il faut une interface pour permettre a l'utilisateur de traiter des propres infos perso de manière autonome, même si pour le moment elles sont minimes, elles pourront avoir vacation a évoluer, un jour. J'ai épluché les branches develop du usershub#80, mais sauf erreur il faut un droit d'admin sur usershub malgré tout (?).

camillemonchicourt commented 5 years ago

Pourquoi pas avoir ces interfaces, mais à prendre en compte :

TheoLechemia commented 5 years ago

En fait on pensait faire en sorte qu'on puisse avoir accès à ses infos perso directement dans UsersHub (dans une version limité ou un utilisateur lambda a accès uniquement à ses info). ça évite de le faire dans GeoNature, puis dans Taxhub etc ...

Le workflow qu'a mis en place Amandine est un peu complexe: regarde ce schéma:

workflow_api_register

@amandine-sahl, tu peux peut-être préciser certaines choses ?

Les routes en questions sont ici : https://github.com/amandine-sahl/UsersHub/blob/develop/app/api/route_register.py

amandine-sahl commented 5 years ago

Pour le moment il n'y a pas de composant angular, nous avons créer une application démo bidon en flask pour l'occasion. (https://github.com/PnX-SI/test_client_usershub_api)

Pour des questions de sécurité il faut effectivement avoir un role qui a les droits nécessaires pour pouvoir créer des utilisateurs. Cet utilisateur peut être paramétrer dans l'application. cf application test

jbrieuclp commented 5 years ago

En fait on pensait faire en sorte qu'on puisse avoir accès à ses infos perso directement dans Userhub (dans une version limité ou un utilisateur lambda a accès uniquement à ses info). ça évite de le faire dans GeoNature, puis dans Taxhub etc ...

La question qui se faut se poser c'est est-ce que usershub ou taxhub doivent être des apps ouvertes à tous ou doivent-elles ne rester accessible qu'à certaines personnes possédant des droits spécifiques (administration, gestion des fiches taxo...). Perso je les vois d'avantage comme des apps spécifiques accessible à quelques personnes administrées via usershub comme c'est déjà le cas.

Je suis partisans de multiplier les fronts, pour avoir des apps cohérentes sans qu'il soit nécessaire de jongler d'une app à une autre pour tel ou tel fonctionnalité. Par contre je suis d'accord pour ne pas multiplier les API il faut que les front pointent tous vers une même API spécialisée (usershub, taxhub, geonature).

camillemonchicourt commented 5 years ago

Oui en effet, les utilisateurs de GeoNature n'ont pas forcément à aller sur UsersHub qui reste dédiée aux administrateurs.

Donc pourquoi pas le proposer dans GeoNature, avec les réserves et la généricité évoquée précédemment (désactivable, ouvert à d'autres méthodes de gestion des utilisateurs...)

jbrieuclp commented 5 years ago

Par rapport au paramétrage, me baser sur la config [CAS_PUBLIC] [CAS_AUTHENTIFICATION] = false permet d'exclure toutes connexions CAS INPN ?

Est-ce que ajouter un paramètre de config "SIGN_UP" : true/false lié à l'application conviendrait pour paramétrer le fait de pouvoir s'inscrire ou non ?

Au passage, petite question de fonctionnement (je pourrais fouiller le code mais bon...), est-ce qu'une connexion via CAS crée un rôle dans t_role ?

TheoLechemia commented 5 years ago

[CAS_PUBLIC] [CAS_AUTHENTIFICATION] = false permet d'exclure toutes connexions CAS INPN ?

C'est pour le contexte GeoNature "dépot légal de biodiversit"é, on utilise le CAS de l'INPN pour se connecter. A n'utiliser que dans ce contexte, donc oui on laisse false.

Est-ce que ajouter un paramètre de config "SIGN_UP"

ça me va. Ou ENABLE_SIGN_UP

Au passage, petite question de fonctionnement (je pourrais fouiller le code mais bon...), est-ce qu'une connexion via CAS crée un rôle dans t_role ?

Oui un enregistrement est créé dans t_roles. Mais encore une fois, ce mécanisme ne marche que pour "dépot légal"

camillemonchicourt commented 5 years ago

Un travail collectif a donc été réalisé (par @joelclems, @amandine-sahl, @jbrieuclp et @TheoLechemia) permettant d'interagir avec UsersHub depuis des applications tierces, grâce à l'ajout d'une API sécurisée de création de comptes utilisateurs (création de rôles et d'utilisateurs temporaires à valider, changement de mot de passe et des informations personnelles). Celle-ci a été intégrée dans la nouvelle version de UsersHub (https://github.com/PnX-SI/UsersHub/releases/tag/2.1.0).

Au niveau de GeoNature, la version 2.2.0 à venir intégrera ainsi plusieurs évolutions :

image

image

image

Ces fonctionnalités sont activables ou non de diverses manières et sont paramétrables. Voir la documentation dédiée : http://docs.geonature.fr/admin-manual.html#creation-de-compte

ca-rock commented 2 years ago

Bonjour,

* Certains souhaitent gérer les utilisateurs, leurs comptes et leurs droits dans des mécanismes externes comme LDAP, ou CAS donc garder ça possible

Est-ce qu'il est toujours envisagé de permettre un lien entre Usershub et un serveur LDAP ?

camillemonchicourt commented 2 years ago

Oui ça serait une évolution intéressante, mais non planifiée ni financée, et plus large que ce ticket sur l'interface d'inscription. Potentiellement plus en lien avec ce ticket : https://github.com/PnX-SI/GeoNature/issues/1811