Schema
Owner
postgres
Descriptions
There is no description for function ps_etendre_compte
Options
Option | Value |
---|---|
Returns |
text |
Language |
|
Parameters |
compte text statut integer = 0 |
Definition
CREATE OR REPLACE FUNCTION public.ps_etendre_compte (
compte text,
statut integer = 0
)
RETURNS text AS
$span$
-- Auteur : Alain Benard
-- Date de mise à jour : 17/11/2020
-- Cette procédure sert à octroyer des droits sur la base courante à un role qui a déjà été créé avec la procédure ps_creer_compte (pour une autre base certainement). Elle définit également les droits par défaut
-- pour les objets qui seront créés par le role concerné au sein de la base courante.
--
-- paramètres :
-- compte : login de l'utilisateur à autoriser
-- statut : 0 pour une inscription dans le groupe de lecture
-- 1 pour une inscription dans le groupe d'écriture
-- Mises à jour :
-- - 17/11/2020 : création de la procédure
-- Un groupe habilité à exécuter cette fonction doit être créé. (nombase_admin) et les droits associés à cette procédure doivent être positionnés tels que ci-dessous :
-- ALTER FUNCTION public.ps_creer_compte(compte text, mdp text, statut integer) OWNER TO postgres;
-- GRANT EXECUTE ON FUNCTION public.ps_creer_compte(compte text, mdp text, statut integer) TO base_admin;
-- REVOKE EXECUTE ON FUNCTION public.ps_creer_compte(compte text, mdp text, statut integer) FROM PUBLIC;
-- déclaration des variables de traitements
DECLARE
role_lecture text; -- nom du groupe bénéficiant des droits en lecture sur la base
role_ecriture text; -- nom du groupe bénéficiant des droits en écriture sur la base
role_admin text; -- nom du groupe bénéficiant des droits d'exécution des procédures stockées d'administration sur la base
req text;
base text; -- nom de la base de données courante sans le prefixe
BEGIN
select into base substring(current_database() from 4);
role_lecture = base || '_lecture';
role_ecriture = base || '_ecriture';
role_admin = base || '_admin';
CASE -- Préparation de la requête à exécuter
WHEN statut = 0 THEN
req := $$GRANT $$ || role_lecture || $$ to $$ || compte || $$ ;$$;
WHEN statut = 1 THEN
req := $$GRANT $$ || role_ecriture || $$ to $$ || compte || $$ ;$$;
else
return 'paramètre statut doit prendre la valeur 0 pour lecture ou 1 pour écriture';
END CASE;
EXECUTE req;
-- Inscription du groupe des gestionnaires comme membre du role cree pour permettre appropriation et gestion des droits sur les objets que le nouveau role pourra creer.
req := $$GRANT $$ || compte || $$ to $$ || role_admin || $$ WITH ADMIN OPTION;$$;
EXECUTE req;
-- Definition des droits par defaut sur les tables et vues
req := $$ ALTER DEFAULT PRIVILEGES FOR ROLE $$ || compte || $$ GRANT SELECT ON TABLES TO $$ || role_lecture || $$;$$;
EXECUTE req;
req := $$ ALTER DEFAULT PRIVILEGES FOR ROLE $$ || compte || $$ GRANT ALL ON TABLES TO $$ || role_ecriture || $$;$$;
EXECUTE req;
RAISE NOTICE 'Extension des droits du compte - % ',req;
return 'Extension des droits OK ' || req;
EXCEPTION
WHEN OTHERS THEN
raise notice '% % - %', sqlstate, sqlerrm,req;
RETURN 'Extension des droits en erreur ' || req || ' - ' || sqlerrm;
END;
$span$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
PARALLEL UNSAFE
COST 100;
This file was generated with SQL Manager for PostgreSQL (www.pgsqlmanager.com) |