Coder Social home page Coder Social logo

pnx-si / usershub Goto Github PK

View Code? Open in Web Editor NEW
13.0 21.0 23.0 3.24 MB

Application web de gestion centralisée des utilisateurs

License: GNU General Public License v3.0

CSS 0.01% Shell 1.76% JavaScript 3.52% HTML 30.12% Python 62.97% Mako 0.25% Dockerfile 1.39%
python flask postgresql national-parks bluehats

usershub's Introduction

UsersHub

Application web de gestion centralisée des utilisateurs.

UsersHub est une application web permettant de regrouper l'ensemble des utilisateurs d'applications web afin de gérer de manière différenciée et centralisée les droits d'accès à ces applications ainsi que le contenu des listes déroulantes d'observateurs.

Elle permet de gérer de manière centralisée des utilisateurs et de les placer dans des groupes, de créer des profils et de les affecter aux utilisateurs et/ou aux groupes d'utilisateurs pour chacune de vos applications. Elle permet également de gérer des organismes.

Compatible avec GeoNature (https://github.com/PNX-SI/GeoNature), TaxHub (https://github.com/PnX-SI/TaxHub), Police (https://github.com/PnEcrins/Police) et Geotrek (https://github.com/GeotrekCE/Geotrek-admin).

Présentation

Principe général : UsersHub permet de gérer et de synchroniser le contenu d'un ou plusieurs schéma utilisateurs d'une ou plusieurs bases PostgreSQL. A condition que le modèle mais aussi que toutes les données de ces bases soient identiques, UsersHub permet de maintenir le contenu du schéma utilisateurs de ces bases strictement identique.

Dans un système d'information, les applications web 'métier' nécessitent généralement une identification par login/pass. Les applications disposent donc d'un dispositif de gestion des utilisateurs et de leur droits.

L'utilisateur n'a pas forcement les mêmes droits d'une application à l'autre et l'administrateur doit maintenir une liste d'utilisateurs dans chacune des applications. Ces applications peuvent avoir chacune une base de données dédiée.

A condition d'organiser la gestion de ces utilisateurs de manière identique dans toutes les bases des applications web, UsersHub permet de centraliser cette gestion et de réaliser les modification dans toutes les bases filles avec un mécanisme de synchronisation des schémas utilisateurs.

Si un utilisateur arrivent dans votre structure, si un mot de passe doit être changé, vous ne le faites qu'une seule fois.

Une fois enregistré, un utilisateur peut être placé dans un groupe et ses droits d'accès à telle ou telle application web sont hérités des droits du groupe.

Mais vous pouvez aussi affecter des droits spécifiques à un utilisateur pour telle application ou telle autre.

Si certains des utilisateurs ou groupe d'utilisateurs doivent figurer dans une liste déroulante de l'application (par exemple une liste d'observateurs ou de représentants), UsersHub permet de créer ces listes et d'en gérer le contenu.

Il ne vous reste alors plus qu'à utiliser cette liste dans votre application.

http://geonature.fr/img/uhv2-screenshot.jpg

Installation

Consulter la documentation : http://usershub.rtfd.org

Ou dans docs/installation.rst

License

  • OpenSource - GPLv3
  • Copyright (c) 2015-2018 - Parc National des Écrins
http://geonature.fr/img/logo-pne.jpg

usershub's People

Contributors

adrien-pajot avatar amandine-sahl avatar bouttier avatar camillemonchicourt avatar clairelagaye avatar dependabot[bot] avatar gildeluermoz avatar hypsug0 avatar jbrieuclp avatar joelclems avatar jpm-cbna avatar julienrenaudleca avatar laumond11u avatar lpofredc avatar mathieu-roudaut-crea avatar theolechemia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

usershub's Issues

Meilleur encodage des MDP

Voir PnX-SI/UsersHub-authentification-module#4
On utilise actuellement du md5, il serait préférable de passer en sha256.
A voir si cela impliquerait des modifications seulement dans UsersHub-authentification-module ou aussi dans les applis.
Ce qui est sur c'est que ça entraînerait des modifications dans les applications qui n'utilisent pas UsersHub-authentification-module (Geotrek ?; Police....)

Modifier utilisateur / Ajouter commentaire

Je modifie un utilisateur pour y ajouter un commentaire.
Quand j'enregistre, l'enregistrement tourne en boucle sans terminer "Enregistrement en cours".

Pourtant le champ Commentaire fonctionne bien quand je le saisis au moment de l'ajout d'un utilisateur. Problème uniquement sur la mise à jour ?

Code application

Pour des questions de volatilité de serait bien d'avoir un code application qui soit unique et non modifiable de façon à pouvoir récupérer l'id application qui lui est potentiellement différent d'une application à l'autre.

SQL data - Voir les séquences

Error sur : PERFORM pg_catalog.setval...

Voir aussi la création des séquences dans le SQL de création où les séquences démarrent à 100000. Héritage PNE ?

Mot de passe dans le formulaire utilisateurs

Tous les utilisateurs n'ont pas forcément un pass. Il y a donc pls chantiers concernant le pass :

  • Selon si l'utilisateur dispose d'un pass ou pas :
    • si c'est le cas : message : Cet utilisateur dispose d'un mot passe. Pour le changer vous pouvez en saisir un nouveau.
    • si ce n'est pas le cas, pas de message ou un message explicite : Cet utilisateur n'a actuellement pas de mot de passe.
  • Si un pass est saisi l'identifiant est obligatoire, sinon il ne l'est pas.
  • prévoir un mécanisme pour supprimer le mot de passe d'un utilisateur qui ne doit plus avoir accès aux applications (si l'identifiant est null alors on supprime le pass ?)

t_roles et champs organisme

Cette table a bien un champs id_organisme qui est mis à jour lors de modification. Par contre elle contient aussi un champs organisme qui fait doublon et n'est pas modifié ors d'un changement sur un utilisateur.
Champs à virer ?

UHV2 - Modifier un mdp

Créer un interface spéciale pour modifier le mdp.
Actuellement quand on est en édition d'un utilisateur, ces champs sont masqués

Gestion des droits de l'appli UsersHub

Il est fait en sorte de ne pas pouvoir gérer les droits de UsersHub dans l'interface en l'excluant de la liste des applications : https://github.com/PnEcrins/UsersHub/blob/master/web/get_applications.php#L5

En effet dans utilisateurs.t_applications elle est bien présente avec l'identifiant 1 :

id_application nom_application desc_application
1 application utilisateurs application permettant d'administrer la présente base de données.

Du coup pour ajouter des droits dans UsersHub à un utilisateur ou groupe il faut le faire directement dans la BDD de UsersHub dans la table utilisateurs.cor_role_droit_application.

Par exemple pour donner des droits d'administration au groupe 1004 et à l'utilisateur 12 :

id_role id_droit id_application
1004 6 1
12 6 1

Attention, toute modification faite directement dans usershubdb n'est pas répliquée dans les BDD filles comme geonaturedb car ce sont les modifications faites depuis l'interface de UsersHub qui sont répercutées dans les BDD filles.
Elles sont donc à répliquer à la main dans les BDD filles.

On ne sait plus exactement pourquoi on n'avait fait en sorte que les droits dans l'application UsersHub ne soient pas gérables depuis l'interface.

A revoir dans une future version ?

Paramètre fill_md5_pass ?

Ajouter un paramètre fill_md5_pass pour que le mot de passe md5 puisse ne pas être renseigné.
En effet, ceux qui n'ont pas de vieilles applications n'ont pas besoin de ce MDP et ce serait dommage de leur coller ce champs fragile si il n'est pas utilisé.

MAJ organisme

Les modifications des organismes depuis le formulaire de UsersHub ne sont pas enregistrés en BDD.
En tout cas pas dans les BDD filles.

UHV2 - Formulaire Utilisateurs - affichage des groupes (et des listes) -

Dans le formulaire, on peut rattacher un utilisateur à un ou pls groupes.
Actuellement le fonctionnement n'est pas assuré au moins lors d'un update, les groupes de l'utilisateur ne sont pas remplis.
Décider s'il faut permettre l'affectation d'un utilisateur à des groupes depuis le formulaire utilisateurs ou pas (seulement depuis le formulaire groupe). Si oui corriger le fonctionnement.
On peut aussi afficher (en lecture seule) les groupes auxquels un utilisateur appartient.

Même logique pour les listes.

Renomme cor_app_privilege en cor_cruved ?

Depuis le début ce nom de table m'embrouille.
D'autant plus que dans les tags, les privilèges sont justement les anciens droits (1 à 6). Et ces anciens droits sont gérés dans cor_role_tag_application.

UHV2 - Ergonomie

Menu :

  • Caler sur la largeur des listes
  • Organismes après Utilisateurs

Liste utilisateurs (et autres listes) :

  • ID organisme >> Nom organisme avec jointure sur bib_organisme
  • Utiliser les icônes glyphicon ou font-awesome (en rapatriant en local la librairie)
  • Supprimer #
  • Utiliser datatable sur toutes les listes (avec pagination en paramètre)

Ajout utilisateurs (et autres formulaires) :

  • Groupes >> Multiselect
  • Envoyer >> Enregistrer, en bas à droite, en couleur
  • Supprimer "Choix"
  • Identifiant à mettre avec le MDP. Pre-remplir avec prenom.nom
  • Supprimer Description
  • Remarques : textbox
  • Marge entre label et champs

Ajout Groupe :

  • Supprimer identifiant et Remarques
  • Description : textbox

Peupler les groupes

  • Lister les groupes avec les utilisateurs
  • Remplacer image flèche par icon

Liste applications

  • ID parent >> Nom parent (ID parent)
  • None >> Laisser vide
  • Liste des utilisateurs >> Utilisateurs de l'application XXXXX

Liste des tags

  • ID_type >> Type
  • Ne pas afficher les TAGS scope et CRUVED

Ajout tag

  • ID type >> Type

Associer rôle à CRUVED

  • Afficher les CRUVED hérités de groupe quand on clique sur un rôle

UHV2 - Revoir script d'installation

Les scripts install_app.sh et install_db.sh correspondent encore à UHV1.

  • Les revoir pour la V2
  • Les tester
  • Revoir aussi la doc d'installation en fonction

SQL de création de la BDD

Séparer le script SQL de création de structure de la BDD et celui d'intégration de données dans la BDD.

UHV2 - Encryptage des MDP

Actuellement UHV2 ne gère que le champs pass_plus en bcrypt.
Il ne gère pas l'ancien MDP pass en MD5 car dans les modèles, la variable pass est déjà existante dans Python.
Néanmoins il est important de continuer à remplir et mettre à jour les 2 champs de MDP pour les applications qui utilisent encore le champs pass en MD5.

UsersHub V2 - Refonte

Une refonte de UsersHub en V2 est amorcée dans une branche dédiée : https://github.com/PnEcrins/UsersHub/tree/uhv2

Cette refonte vise à :

  • Moderniser UH en basculant sur de nouvelles technologies (Python 3, Flask, Bootstrap, Jinja, SQLAlchemy, Javascript)
  • Intégrer la gestion des tags et du CRUVED (nécessaire à GeoNature V2)

La refonte est réalisée par @Laumond11u

utilisateurs.cor_app_privileges VS utilisateurs.cor_role_tag ?

utilisateurs.cor_app_privileges semble très orientée sur le fonctionnement de GeoNature (un rôle a un tag de type action, associé à un tag de type object (portée), associé à une application (module) mais du coup elle est spécifique ?

Par ailleurs on associe des tags à des role dans utilisateurs.cor_role_tag.

Renommer le schema utilisateurs

A voir si on profite de la V2 pour renommer le schéma utilisateurs en ref_users.

Pour garder la compatibilité avec les applications qui utilisaient UH V1, des vues ont été créées (0b7783b).

On pourrait laisser ses vues dans un schéma nommé utilisateurs mais basculer les tables et fonctions dans un schéma ref_users.

IDENTIFICATION - page vide avec un utilisateur non administrateur

Si un utilisateur qui n'est pas administrateur tente de se loguer, l'application s'ouvre sur une page vide.
Il faut tester les droits et adapter le comportement de l'application selon les droits nécessaires.
Mise en paramètre des droits min pour ouvrir l'appli ?

UHV2 - Authentification

  • Utiliser le sous-module https://github.com/PnX-SI/UsersHub-authentification-module pour intégrer l'authentification dans UsersHub V2.
  • Voir la conf TaxHub pour permettre de définir l'encryptage utilisé : https://github.com/PnX-SI/TaxHub/blob/develop/config.py.sample#L24
  • Se baser sur un tag Admin-usershub pour savoir si l'utilisateur a le droit de se connecter à l'application
  • Dans un premier temps, soit on accède à toute l'application, soit on n'y accède pas
  • Bien protéger chaque route
  • Dans un second temps, on pourra imaginer des administrateurs secondaires qui ne peuvent gérer que les utilisateurs et les groupes de leur organisme, sans accéder aux applications, ni aux tags, ni aux autres éléments.

Chemin de migration depuis Usershub 1.2

Salut,

En vue de la migration vers GeoNature V2 et de son module Usershub, disposez vous d'une documentation et d'outillage pour celle-ci (en plus des scripts update1.xt01.y.sql) ?
Pour mémoire nous utilisons actuellement au PNM Usershub 1.2.0 pour la gestion des utilisateurs de l'application autorisation de circulation.

Merci

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.