diff --git a/VERSION b/VERSION index 3a3cd8c..1892b92 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.1 +1.3.2 diff --git a/data/usershub.sql b/data/usershub.sql index 4751b49..c1d0d34 100644 --- a/data/usershub.sql +++ b/data/usershub.sql @@ -10,6 +10,9 @@ CREATE SCHEMA IF NOT EXISTS utilisateurs; SET search_path = utilisateurs, pg_catalog; +------------- +--FUNCTIONS-- +------------- CREATE OR REPLACE FUNCTION modify_date_insert() RETURNS trigger LANGUAGE plpgsql @@ -36,11 +39,15 @@ SET default_tablespace = ''; SET default_with_oids = false; +---------------------- +--TABLES & SEQUENCES-- +---------------------- + CREATE TABLE IF NOT EXISTS cor_role_menu ( id_role integer NOT NULL, id_menu integer NOT NULL ); -COMMENT ON TABLE cor_role_menu IS 'gestion du contenu des menus utilisateurs dans les applications'; +COMMENT ON TABLE cor_role_menu IS 'Gestion du contenu des menus utilisateurs dans les applications'; CREATE TABLE IF NOT EXISTS cor_roles ( id_role_groupe integer NOT NULL, @@ -73,7 +80,7 @@ DO $$ BEGIN CREATE SEQUENCE t_roles_id_role_seq - START WITH 1000000 + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE @@ -103,7 +110,7 @@ DO $$ BEGIN CREATE SEQUENCE bib_organismes_id_seq - START WITH 1000000 + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE @@ -139,7 +146,7 @@ DO $$ BEGIN CREATE SEQUENCE bib_unites_id_seq - START WITH 1000000 + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE @@ -170,7 +177,7 @@ DO $$ BEGIN CREATE SEQUENCE t_applications_id_application_seq - START WITH 1000000 + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE @@ -195,7 +202,7 @@ DO $$ BEGIN CREATE SEQUENCE t_menus_id_menu_seq - START WITH 1000000 + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE @@ -224,7 +231,7 @@ DO $$ BEGIN CREATE SEQUENCE t_tags_id_tag_seq - START WITH 1000000 + START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE @@ -875,9 +882,9 @@ CREATE OR REPLACE FUNCTION can_user_do_in_module( mydataextend integer) RETURNS boolean AS $BODY$ --- the function say if the given user can do the requested action in the requested module on the resquested data +-- the function say if the given user can do the requested action in the requested module on the requested data -- USAGE : SELECT utilisateurs.can_user_do_in_module(requested_userid,requested_actionid,requested_moduleid,requested_dataextendid); --- SAMPLE :SELECT utilisateurs.can_user_do_in_module(2,15,14,22); +-- SAMPLE : SELECT utilisateurs.can_user_do_in_module(2,15,3,22); BEGIN IF myaction IN (SELECT id_tag_action FROM utilisateurs.v_usersaction_forall_gn_modules WHERE id_role = myuser AND id_application = mymodule AND id_tag_object >= mydataextend) THEN RETURN true; @@ -896,9 +903,9 @@ CREATE OR REPLACE FUNCTION can_user_do_in_module( mydataextend integer) RETURNS boolean AS $BODY$ --- the function say if the given user can do the requested action in the requested module on the resquested data +-- the function say if the given user can do the requested action in the requested module on the requested data -- USAGE : SELECT utilisateurs.can_user_do_in_module(requested_userid,requested_actioncode,requested_moduleid,requested_dataextendid); --- SAMPLE :SELECT utilisateurs.can_user_do_in_module(2,15,14,22); +-- SAMPLE : SELECT utilisateurs.can_user_do_in_module(2,15,3,22); BEGIN IF myaction IN (SELECT tag_action_code FROM utilisateurs.v_usersaction_forall_gn_modules WHERE id_role = myuser AND id_application = mymodule AND id_tag_object >= mydataextend) THEN RETURN true; @@ -920,7 +927,7 @@ DECLARE themaxleveldatatype integer; -- the function return the max accessible extend of data the given user can access in the requested module -- USAGE : SELECT utilisateurs.user_max_accessible_data_level_in_module(requested_userid,requested_actionid,requested_moduleid); --- SAMPLE :SELECT utilisateurs.user_max_accessible_data_level_in_module(2,14,14); +-- SAMPLE : SELECT utilisateurs.user_max_accessible_data_level_in_module(2,14,3); BEGIN SELECT max(tag_object_code::int) INTO themaxleveldatatype FROM utilisateurs.v_usersaction_forall_gn_modules WHERE id_role = myuser AND id_application = mymodule AND id_tag_action = myaction; RETURN themaxleveldatatype; @@ -940,7 +947,7 @@ DECLARE themaxleveldatatype integer; -- the function return the max accessible extend of data the given user can access in the requested module -- USAGE : SELECT utilisateurs.user_max_accessible_data_level_in_module(requested_userid,requested_actioncode,requested_moduleid); --- SAMPLE :SELECT utilisateurs.user_max_accessible_data_level_in_module(2,14,14); +-- SAMPLE : SELECT utilisateurs.user_max_accessible_data_level_in_module(2,14,3); BEGIN SELECT max(tag_object_code::int) INTO themaxleveldatatype FROM utilisateurs.v_usersaction_forall_gn_modules WHERE id_role = myuser AND id_application = mymodule AND tag_action_code = myaction; RETURN themaxleveldatatype; @@ -954,8 +961,8 @@ CREATE OR REPLACE FUNCTION find_all_modules_childs(myidapplication integer) $BODY$ --Param : id_application d'un module ou d'une application quelque soit son rang --Retourne le id_application de tous les modules enfants + le module lui-même sous forme d'un jeu de données utilisable comme une table - --Usage SELECT utilisateurs.find_all_modules_childs(14); - --ou SELECT * FROM utilisateurs.t_applications WHERE id_application IN(SELECT * FROM utilisateurs.find_all_modules_childs(14)) + --Usage SELECT utilisateurs.find_all_modules_childs(3); + --ou SELECT * FROM utilisateurs.t_applications WHERE id_application IN(SELECT * FROM utilisateurs.find_all_modules_childs(3)) DECLARE inf RECORD; c integer; @@ -987,7 +994,7 @@ CREATE OR REPLACE FUNCTION cruved_for_user_in_module( $BODY$ -- the function return user's CRUVED in the requested module -- USAGE : SELECT utilisateurs.cruved_for_user_in_module(requested_userid,requested_moduleid); --- SAMPLE :SELECT utilisateurs.cruved_for_user_in_module(2,14); +-- SAMPLE :SELECT utilisateurs.cruved_for_user_in_module(2,3); DECLARE thecruved json; BEGIN @@ -1011,13 +1018,13 @@ DO $$ BEGIN INSERT INTO bib_droits (id_droit, nom_droit, desc_droit) VALUES -(5, 'validateur', 'Il valide bien sur') -,(4, 'modérateur', 'Peu utilisé') -,(0, 'aucun', 'aucun droit.') -,(1, 'utilisateur', 'Ne peut que consulter') -,(2, 'rédacteur', 'Il possède des droit d''écriture pour créer des enregistrements') -,(6, 'administrateur', 'Il a tous les droits') -,(3, 'référent', 'utilisateur ayant des droits complémentaires au rédacteur (par exemple exporter des données ou autre)') +(5, 'Validateur', 'Il valide bien sur') +,(4, 'Modérateur', 'Peu utilisé') +,(0, 'Aucun', 'aucun droit.') +,(1, 'Lecteur', 'Ne peut que consulter') +,(2, 'Rédacteur', 'Il possède des droit d''écriture pour créer des enregistrements') +,(6, 'Administrateur', 'Il a tous les droits') +,(3, 'Référent', 'Utilisateur ayant des droits complémentaires au rédacteur (par exemple exporter des données ou autre)') ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; @@ -1029,10 +1036,10 @@ DO $$ BEGIN INSERT INTO bib_organismes (nom_organisme, adresse_organisme, cp_organisme, ville_organisme, tel_organisme, fax_organisme, email_organisme, id_organisme) VALUES -('PNF', NULL, NULL, 'Montpellier', NULL, NULL, NULL, 1) -,('Parc National des Ecrins', 'Domaine de Charance', '05000', 'GAP', '04 92 40 20 10', '', '', 2) +('Parc National des Ecrins', 'Domaine de Charance', '05000', 'GAP', '04 92 40 20 10', '', '', 1) ,('Autre', '', '', '', '', '', '', -1) ; +PERFORM pg_catalog.setval('bib_organismes_id_seq', (SELECT max(id_organisme)+1 FROM bib_organismes), false); EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; END @@ -1043,18 +1050,13 @@ DO $$ BEGIN INSERT INTO bib_unites (nom_unite, adresse_unite, cp_unite, ville_unite, tel_unite, fax_unite, email_unite, id_unite) VALUES -('Virtuel', NULL, NULL, NULL, NULL, NULL, NULL, 1) -,('Personnels partis', NULL, NULL, NULL, NULL, NULL, NULL, 2) +('Service scientifique', '', '', '', '', NULL, NULL, 1) +,('Service SI', '', '', '', '', NULL, NULL, 2) ,('Stagiaires', NULL, NULL, '', '', NULL, NULL, 3) -,('Secretariat général', '', '', '', '', NULL, NULL, 4) -,('Service scientifique', '', '', '', '', NULL, NULL, 5) -,('Service SI', '', '', '', '', NULL, NULL, 6) -,('Service Communication', '', '', '', '', NULL, NULL, 7) -,('Conseil scientifique', '', '', '', NULL, NULL, NULL, 8) -,('Conseil d''administration', '', '', '', NULL, NULL, NULL, 9) -,('Partenaire fournisseur', NULL, NULL, NULL, NULL, NULL, NULL, 10) +,('Partenaire fournisseur', NULL, NULL, NULL, NULL, NULL, NULL, 4) ,('Autres', NULL, NULL, NULL, NULL, NULL, NULL, -1) ; +PERFORM pg_catalog.setval('bib_unites_id_seq', (SELECT max(id_unite)+1 FROM bib_unites), false); EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; END @@ -1065,12 +1067,12 @@ DO $$ BEGIN INSERT INTO t_applications (id_application, nom_application, desc_application, id_parent) VALUES -(1, 'application utilisateurs', 'application permettant d''administrer la présente base de données.',NULL) -,(2, 'taxhub', 'application permettant d''administrer la liste des taxons.',NULL) -,(14, 'application geonature', 'Application permettant la consultation et la gestion des relevés faune et flore.',NULL) -,(15, 'contact (GeoNature2)', 'Module contact faune-flore-fonge de GeoNature', 14) +(1, 'UsersHub', 'Application permettant d''administrer la présente base de données.',NULL) +,(2, 'TaxHub', 'Application permettant d''administrer la liste des taxons.',NULL) +,(3, 'GeoNature', 'Application permettant la consultation et la gestion des relevés faune et flore.',NULL) +--,(4, 'Occtax', 'Module contact faune-flore-fonge de GeoNature', 3) -- Appli supprimée car créé par l'installation du module ; -PERFORM pg_catalog.setval('t_applications_id_application_seq', 15, true); +PERFORM pg_catalog.setval('t_applications_id_application_seq', (SELECT max(id_application)+1 FROM t_applications), false); EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; END @@ -1081,17 +1083,19 @@ DO $$ BEGIN INSERT INTO t_roles (groupe, id_role, identifiant, nom_role, prenom_role, desc_role, pass, email, organisme, id_unite, pn, session_appli, date_insert, date_update, id_organisme, remarques) VALUES -(true, 20001, NULL, 'grp_socle 2', NULL, 'Bureau d''étude socle 2', NULL, NULL, 'mastructure', -1, true, NULL, NULL, NULL, NULL, 'Groupe à droit étendu') -,(true, 20002, NULL, 'grp_en_poste', NULL, 'Tous les agents en poste au PN', NULL, NULL, 'mastructure', -1, true, NULL, NULL, NULL, NULL,'groupe test') -,(true, 20003, NULL, 'grp_socle 1', NULL, 'Bureau d''étude socle 1', NULL, NULL,'mastructure', -1, true, NULL, NULL, NULL, NULL,'Groupe à droit limité') +(true, 6, NULL, 'Grp_socle 2', NULL, 'Bureau d''étude socle 2', NULL, NULL, 'mastructure', -1, true, NULL, NULL, NULL, NULL, 'Groupe à droit étendu') +,(true, 7, NULL, 'Grp_en_poste', NULL, 'Tous les agents en poste', NULL, NULL, 'mastructure', -1, true, NULL, NULL, NULL, NULL,'Groupe des agents de la structure') +,(true, 8, NULL, 'Grp_socle 1', NULL, 'Bureau d''étude socle 1', NULL, NULL, 'mastructure', -1, true, NULL, NULL, NULL, NULL, 'Groupe à droit limité') +,(true, 9, NULL, 'Grp_admin', NULL, 'Tous les administrateurs', NULL, NULL, 'mastructure', -1, true, NULL, NULL, NULL, NULL, 'Groupe à droit total') ; INSERT INTO t_roles (groupe, id_role, identifiant, nom_role, prenom_role, desc_role, pass, email, organisme, id_unite, pn, session_appli, date_insert, date_update, id_organisme, remarques, pass_plus) VALUES (false, 1, 'admin', 'Administrateur', 'test', NULL, '21232f297a57a5a743894a0e4a801fc3', NULL, 'Autre', -1, true, NULL, NULL, NULL, -1, 'utilisateur test à modifier', '$2y$13$TMuRXgvIg6/aAez0lXLLFu0lyPk4m8N55NDhvLoUHh/Ar3rFzjFT.') ,(false, 2, 'agent', 'Agent', 'test', NULL, 'b33aed8f3134996703dc39f9a7c95783', NULL, 'Autre', -1, true, NULL, NULL, NULL, -1, 'utilisateur test à modifier ou supprimer', NULL) ,(false, 3, 'partenaire', 'Partenaire', 'test', NULL, '5bd40a8524882d75f3083903f2c912fc', NULL, 'Autre', -1, true, NULL, NULL, NULL, -1, 'utilisateur test à modifier ou supprimer', NULL) -,(false,4, 'pierre.paul', 'Paul', 'Pierre', NULL, '21232f297a57a5a743894a0e4a801fc3', NULL, 'Autre', -1, false, NULL, NULL, NULL, -1, 'utilisateur test à modifier ou supprimer', NULL) -,(false,5, 'validateur', 'validateur', 'test', NULL, '21232f297a57a5a743894a0e4a801fc3', NULL, 'Autre', -1, false, NULL, NULL, NULL, -1, 'utilisateur test à modifier ou supprimer', NULL) +,(false, 4, 'pierre.paul', 'Paul', 'Pierre', NULL, '21232f297a57a5a743894a0e4a801fc3', NULL, 'Autre', -1, false, NULL, NULL, NULL, -1, 'utilisateur test à modifier ou supprimer', NULL) +,(false, 5, 'validateur', 'Validateur', 'test', NULL, '21232f297a57a5a743894a0e4a801fc3', NULL, 'Autre', -1, false, NULL, NULL, NULL, -1, 'utilisateur test à modifier ou supprimer', NULL) ; +PERFORM pg_catalog.setval('t_roles_id_role_seq', (SELECT max(id_role)+1 FROM t_roles), false); EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; END @@ -1102,12 +1106,16 @@ DO $$ BEGIN INSERT INTO cor_role_droit_application (id_role, id_droit, id_application) -VALUES (1, 6, 1) +VALUES +(1, 6, 1) ,(1, 6, 2) -,(1, 6, 14) -,(20002, 3, 14) -,(2, 2, 14) -,(3, 1, 14) +,(1, 6, 3) +,(7, 3, 3) +,(2, 2, 3) +,(3, 1, 3) +,(9, 6, 1) +,(9, 6, 2) +,(9, 6, 3) ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; @@ -1119,10 +1127,10 @@ DO $$ BEGIN INSERT INTO t_menus (id_menu, nom_menu, desc_menu, id_application) -VALUES (9, 'faune - Observateurs', 'Listes des observateurs faune', 14) -,(10, 'flore - Observateurs', 'Liste des observateurs flore', 14) +VALUES +(1, 'Observateurs Occtax', 'Listes des observateurs Occtax', 3) ; -PERFORM pg_catalog.setval('t_menus_id_menu_seq', 11, true); +PERFORM pg_catalog.setval('t_menus_id_menu_seq', (SELECT max(id_menu)+1 FROM t_menus), false); EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; END @@ -1133,8 +1141,8 @@ DO $$ BEGIN INSERT INTO cor_role_menu (id_role, id_menu) VALUES -(1, 10) -,(1, 9) +(7, 1) -- Ajouter le Grp_admin dans la liste des observateurs Occtax +,(9, 1) -- Ajouter le Grp_en_poste dans la liste des observateurs Occtax ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; @@ -1146,10 +1154,12 @@ DO $$ BEGIN INSERT INTO cor_roles (id_role_groupe, id_role_utilisateur) -VALUES (20002, 1) -,(20002, 2) -,(20002, 4) -,(20002, 5) +VALUES +(7, 1) +,(9, 1) +,(7, 2) +,(7, 4) +,(7, 5) ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; @@ -1161,10 +1171,10 @@ DO $$ BEGIN INSERT INTO bib_tag_types(id_tag_type, tag_type_name, tag_type_desc) VALUES -(1, 'Object', 'Define a type object. Usually to define privileges on an object.') -,(2, 'Action', 'Define a type action. Usually to define privileges for an action.') -,(3, 'Privilege', 'Define a privilege level.') -,(4, 'Liste', 'Define a type liste for grouping anything.') +(1, 'Object', 'Define a type object. Usually to define privileges on an object') +,(2, 'Action', 'Define a type action. Usually to define privileges for an action') +,(3, 'Privilege', 'Define a privilege level') +,(4, 'List', 'Define a type list to group anything') ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; @@ -1175,7 +1185,7 @@ DO $$ BEGIN INSERT INTO t_tags (id_tag, id_tag_type, tag_code, tag_name, tag_label, tag_desc) VALUES -(1, 3,'1','utilisateur', 'Utilisateur','Ne peut que consulter') +(1, 3, '1', 'utilisateur', 'Utilisateur','Ne peut que consulter') ,(2, 3, '2', 'rédacteur', 'Rédacteur','Il possède des droit d''écriture pour créer des enregistrements') ,(3, 3, '3', 'référent', 'Référent','Utilisateur ayant des droits complémentaires au rédacteur (par exemple exporter des données ou autre)') ,(4, 3, '4', 'modérateur', 'Modérateur', 'Peu utilisé') @@ -1191,12 +1201,9 @@ INSERT INTO t_tags (id_tag, id_tag_type, tag_code, tag_name, tag_label, tag_desc ,(21, 3, '1', 'my data', 'My data', 'Can do action only on my data') ,(22, 3, '2', 'my organism data', 'My organism data', 'Can do action only on my data and on my organism data') ,(23, 3, '3', 'all data', 'All data', 'Can do action on all data') - -,(100, 4, NULL, 'observateurs flore', 'Observateurs flore','Liste des observateurs pour les protocoles flore') -,(101, 4, NULL, 'observateurs faune', 'Observateurs faune','Liste des observateurs pour les protocoles faune') -,(102, 4, NULL, 'observateurs aigle', 'Observateurs aigle', 'Liste des observateurs pour le protocole suivi de la reproduction de l''aigle royal') +,(24, 4, NULL, 'observateurs occtax', 'Observateurs Occtax', 'Liste des observateurs dans Occtax') ; -PERFORM pg_catalog.setval('t_tags_id_tag_seq', 104, true); +PERFORM pg_catalog.setval('t_tags_id_tag_seq', (SELECT max(id_tag)+1 FROM t_tags), false); EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; END @@ -1207,13 +1214,10 @@ DO $$ BEGIN INSERT INTO cor_role_tag (id_role, id_tag) VALUES ---Liste des observateurs faune -(1,101) -,(20002,101) -,(5,101) --- --Liste des observateurs flore -,(2,100) -,(5,100) +--Liste des observateurs Occtax +(2, 24) +,(5, 24) +,(7, 24) ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; @@ -1228,35 +1232,45 @@ INSERT INTO cor_app_privileges (id_tag_action, id_tag_object, id_application, id --Administrateur sur UsersHub et TaxHub (6,23,1,1) ,(6,23,2,1) +--- Groupe administrateur sur UsersHub et TaxHub +,(6,23,1,9) +,(6,23,2,9) --Administrateur sur GeoNature -,(11, 23, 14, 1) -,(12, 23, 14, 1) -,(13, 23, 14, 1) -,(14, 23, 14, 1) -,(15, 23, 14, 1) -,(16, 23, 14, 1) +,(11, 23, 3, 1) +,(12, 23, 3, 1) +,(13, 23, 3, 1) +,(14, 23, 3, 1) +,(15, 23, 3, 1) +,(16, 23, 3, 1) +--- Groupe administrateur sur GeoNature +,(11, 23, 3, 9) +,(12, 23, 3, 9) +,(13, 23, 3, 9) +,(14, 23, 3, 9) +,(15, 23, 3, 9) +,(16, 23, 3, 9) --Validateur général sur tout GeoNature -,(14, 23, 14, 5) +,(14, 23, 3, 5) --Validateur pour son organisme sur contact -,(14, 22, 15, 4) +--,(14, 22, 4, 4) -- Droits Occtax supprimés car c'est l'installation du module qui créé l'application --CRUVED du groupe en poste sur tout GeoNature -,(11, 23, 14, 20002) -,(12, 22, 14, 20002) -,(13, 21, 14, 20002) -,(15, 22, 14, 20002) -,(16, 21, 14, 20002) +,(11, 23, 3, 7) +,(12, 22, 3, 7) +,(13, 21, 3, 7) +,(15, 22, 3, 7) +,(16, 21, 3, 7) --Groupe bureau d''étude socle 2 sur tout GeoNature -,(11, 23, 14, 20001) -,(12, 22, 14, 20001) -,(13, 21, 14, 20001) -,(15, 22, 14, 20001) -,(16, 21, 14, 20001) +,(11, 23, 3, 6) +,(12, 22, 3, 6) +,(13, 21, 3, 6) +,(15, 22, 3, 6) +,(16, 21, 3, 6) --Groupe bureau d''étude socle 1 sur tout GeoNature -,(11, 23, 14, 20003) -,(12, 21, 14, 20003) -,(13, 21, 14, 20003) -,(15, 21, 14, 20003) -,(16, 21, 14, 20003) +,(11, 23, 3, 8) +,(12, 21, 3, 8) +,(13, 21, 3, 8) +,(15, 21, 3, 8) +,(16, 21, 3, 8) ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'Tentative d''insertion de valeur existante'; diff --git a/docs/changelog.rst b/docs/changelog.rst index eeb6537..69df814 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -2,34 +2,40 @@ CHANGELOG ========= -1.3.1 (2018-05-17) +1.3.2 (2018-09-20) ------------------ -https://github.com/PnEcrins/UsersHub/compare/1.3.0...develop +**Corrections** + +* Installation BDD : Nettoyage des données insérées et remise à 1 des séquences par défaut +* Vérification que le mot de passe encrypté en md5 et sha soient cohérents (#34) + +1.3.1 (2018-05-17) +------------------ **Nouveautés** * Préparation dans la BDD d'une future version 1.4.0 (dont les extensions sont utilisées dans le développement de GeoNature2) : - + - Intégration d'un mécanisme générique d'étiquettes (tags) permettant une gestion des droits par actions sur des objets. Ce mécanisme permet aussi d'affecter des étiquettes à des roles, des organismes ou des applications. Il permet également de gérer la notion de portée des actions sur différentes étendue de données (mes données seulement, celles de mon organisme, toutes les données) - - Intégration d'une hiérarchie entre applications et organismes (``id_parent``). - - Pour le moment, ces extensions du modèle ne concernent que la base de données et pas l'interface de l'application. -* Mise en paramètre du cost de l'algorythme de criptage bcrypt -* Configuration apache dans un fichier usershub.conf comme taxhub et l'atlas + - Intégration d'une hiérarchie entre applications et organismes (``id_parent``) + - Pour le moment, ces extensions du modèle ne concernent que la base de données et pas l'interface de l'application +* Mise en paramètre du cost de l'algorithme de cryptage bcrypt +* Configuration Apache dans un fichier dédié ``usershub.conf``, comme TaxHub et GeoNature-atlas **Corrections** * Ajout du ``pass_plus`` dans toutes les vues * Correction de l'installation (localisation du ``config.php``) * Ajout d'une vue manquante et nécessaire au sous-module d'authentification -* Interdire la création d'utilisateur avec l'organisme 0 (= ALL = tous les organismes) ; Utilisé dans GeoNature2 pour définir des paramètres applicables à tous les organismes. +* Interdire la création d'utilisateur avec l'organisme 0 (= ALL = tous les organismes). Utilisé dans GeoNature2 pour définir des paramètres applicables à tous les organismes **Notes de version** -* Ajouter le paramètre ``$pass_cost`` dans le ``config/config.php`` et lui donner une valeur éventuellement différente. Plus la valeur est importante, plus le temps de calcul de hashage du mot de passe est important. +* Ajouter le paramètre ``$pass_cost`` dans le ``config/config.php`` et lui donner une valeur éventuellement différente. Plus la valeur est importante, plus le temps de calcul de hashage du mot de passe est important * Exécuter le script ``data/update1.3.0to1.3.1.sql`` -* Reporter les modifications dans les bases filles. -* Facultatif : revoir la configuration apache qui est maintenant dans un fichier usershub.conf (voir la doc). Ne pas oublier de supprimer le lien symbolique dans ``/var/www/html`` +* Reporter les modifications dans les bases filles +* Facultatif : revoir la configuration Apache qui est maintenant dans un fichier ``usershub.conf`` (voir la doc). Ne pas oublier de supprimer le lien symbolique dans ``/var/www/html`` 1.3.0 (2017-12-11) @@ -39,7 +45,7 @@ https://github.com/PnEcrins/UsersHub/compare/1.3.0...develop * Mise en paramètre du port PostgreSQL pour l'installation initiale * Intégration d'UUID pour les organismes et les roles afin de permettre des consolidations de bases utilisateurs -* Intégration d'un mécanisme d'authentification plus solide à base de hachage du mot de pass sur la base de l'algorithme ``bscript``. L'ancien mécanisme encodé en md5 (champ ``pass``) reste utilisable. Attention ceci ne concerne que l'authentification à UsersHub. Pour utiliser le hash dans d'autres applications, il faudra modifier les applications concernées et utiliser le nouveau champ ``pass_plus`` à la place du champ ``pass``. +* Intégration d'un mécanisme d'authentification plus solide à base de hachage du mot de pass sur la base de l'algorithme ``bcrypt``. L'ancien mécanisme encodé en md5 (champ ``pass``) reste utilisable. Attention ceci ne concerne que l'authentification à UsersHub. Pour utiliser le hash dans d'autres applications, il faudra modifier les applications concernées et utiliser le nouveau champ ``pass_plus`` à la place du champ ``pass``. * Création d'un formulaire permettant aux utilisateurs de mettre à jour leur mot de passe et de générer le nouveau hachage du mot de passe (http://mondomaine.fr/usershub/majpass.php). **Notes de version** @@ -48,10 +54,11 @@ https://github.com/PnEcrins/UsersHub/compare/1.3.0...develop * Synchroniser les UUID vers les BDD filles. Le script SQL appliqué sur la BDD mère va générer des UUID pour chaque utilisateur et organisme. S'il était appliqué sur les BDD filles, les UUID générés seraient différents de ceux de la BDD mère. Il faut donc les générer une seule fois dans la BDD mère, puis les copier dans les BDD filles. Pour cela, après s'être authentifié dans UsersHub il suffit de lancer le script ``web/sync_uuid.php`` : http://mondomaine.fr/usershub/sync_uuid.php. ATTENTION, ce script utilise le fichier ``dbconnexions.json`` pour boucler sur les BDD filles, il ne fonctionnera que si vous avez préalablement mis à jour toutes les BDD filles inscrites dans ``dbconnexions.json``. * Créer le fichier ``config/config.php`` à partir du fichier ``config/config.php.sample`` et choisissez le mécanisme d'authentification à UsersHub que vous souhaitez mettre en place, ainsi que la taille minimale des mots de passe du nouveau champs ``pass_plus``. Il est conseillé de conserver le mot de passe ``pass`` (encodé en md5) le temps de mettre à jour les mots de passe des utilisateurs de UsersHub. * Générer le hash des mots de passe, au moins pour les utilisateurs de UsersHub. Il existe trois manières de le faire : - * lors de l'authentification de l'utilisateur, le hash du mot de pass qu'il vient de saisir est généré dans le champ ``pass_plus``. - * en resaisissant le passe des utilisateurs dans le formulaire ``utilisateur``. - * lors de la création d'un nouvel utilisateur, le hash est également généré (ainsi que le md5). - * il n'est pas possible de générer le hash du mot de passe des utilisateurs existant à partir du mot de pass enregistré dans le champ ``pass`` (encodé en md5). Pour cela, diffusez le formulaire ``majpass.php`` qui permet aux utilisateurs de mettre à jour leur mot de passe et de générer le hash (ainsi que de mettre à jour le md5) avec l'adresse : http://mondomaine.fr/usershub/majpass.php + + - lors de l'authentification de l'utilisateur, le hash du mot de pass qu'il vient de saisir est généré dans le champ ``pass_plus``. + - en resaisissant le passe des utilisateurs dans le formulaire ``utilisateur``. + - lors de la création d'un nouvel utilisateur, le hash est également généré (ainsi que le md5). + - il n'est pas possible de générer le hash du mot de passe des utilisateurs existant à partir du mot de pass enregistré dans le champ ``pass`` (encodé en md5). Pour cela, diffusez le formulaire ``majpass.php`` qui permet aux utilisateurs de mettre à jour leur mot de passe et de générer le hash (ainsi que de mettre à jour le md5) avec l'adresse : http://mondomaine.fr/usershub/majpass.php 1.2.2 (2017-07-06) diff --git a/docs/installation.rst b/docs/installation.rst index 04061f7..7947d94 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -35,7 +35,7 @@ Création de la base de données Configuration de l'application ============================== -* Se loguer sur le serveur avec l'utilisateur linux ``synthese`` +* Se loguer sur le serveur avec votre utilisateur linux (``synthese`` dans notre exemple) * Installation et configuration de l'application @@ -45,11 +45,12 @@ Configuration de l'application cd /home/synthese/usershub ./install_app.sh -Configuration apache +Configuration Apache ==================== -Remplacer `MONUSER` par le nom de votre utilisateur linux. - :: +Remplacer `MONUSER` par le nom de votre utilisateur linux. + +:: sudo touch /etc/apache2/sites-available/usershub.conf sudo sh -c 'echo "# Configuration UsersHub" >> /etc/apache2/sites-available/usershub.conf' @@ -64,8 +65,9 @@ Remplacer `MONUSER` par le nom de votre utilisateur linux. sudo a2ensite usershub sudo service apache2 restart -Vous devez éditer le fichier dbconnexoins.json et y ajouter les paramètres de connexions à toutes les bases que vous souhaitez synchroniser avec UsersHub. -Si vous avez changer l'utilisateur et le mot de passe par défaut, vous devez changer la première section de ce fichier pour obtenir quelque chose qui ressemble à ceci : +Vous devez éditer le fichier ``dbconnexions.json`` et y ajouter les paramètres de connexions à toutes les bases que vous souhaitez synchroniser avec UsersHub. + +Si vous avez changé l'utilisateur et le mot de passe par défaut, vous devez changer la première section de ce fichier pour obtenir quelque chose qui ressemble à ceci : :: @@ -77,11 +79,11 @@ Si vous avez changer l'utilisateur et le mot de passe par défaut, vous devez ch ,"pass":"monpassachanger" ... -UsersHub peut fonctionner seul avec sa propre base de données mais il est configurer par défaut pour fonctionner avec GeoNature. Vous devez renseigner les paramêtres de connexion à la base de GeoNature. +UsersHub peut fonctionner seul avec sa propre base de données mais il est configuré par défaut pour fonctionner avec GeoNature. Vous devez renseigner les paramêtres de connexion à la base de GeoNature. * Pour tester, se connecter à l'application via http://mon-domaine.fr/usershub et les login et pass admin/admin -* choisir le mode d'authentification dans le fichier ``config/config.php`` +* Choisir le mode d'authentification dans le fichier ``config/config.php`` Mise à jour de l'application ---------------------------- diff --git a/web/generate_pass_plus.php b/web/generate_pass_plus.php index 757b104..8c36eaf 100644 --- a/web/generate_pass_plus.php +++ b/web/generate_pass_plus.php @@ -1,4 +1,4 @@ -"" OR $connect_dbname<>"" OR $connect_user<>"" OR $connect_pass<>"") { - $dbconn = pg_connect("host=$connect_host port=$connect_port dbname=$connect_dbname user=$connect_user password=$connect_pass"); - $sql = "UPDATE utilisateurs.t_roles SET pass_plus = '".$passplus."' WHERE id_role = ".$dat['id_role']; - $result = pg_query($sql) or die ('{success: false, msg:"ben ! pas bon."}') ; + $dbconn = pg_connect("host=$connect_host port=$connect_port dbname=$connect_dbname user=$connect_user password=$connect_pass"); + $sql = "UPDATE utilisateurs.t_roles SET pass_plus = '".$passplus."', pass = '". $passmd5 ."' WHERE id_role = ".$dat['id_role']; + print $sql; + $result = pg_query($sql) or die ('{success: false, msg:"ben ! pas bon AAA."}') ; $txt = $db_fun_name." - Le pass_plus a été mis à jour.
"; pg_close($dbconn); }