create role postgrest nosuperuser nocreatedb nocreaterole noinherit noreplication nobypassrls
  login password '9012';

-- postgrest est le rôle utilisé par l'application pour se connecter à la base.
-- Il doit être configuré pour avoir un accès très limité.
-- Il s'agit d'un caméléon dont la tâche est de « devenir » un autre utilisateur pour servir des requêtes HTTP authentifiées.

-- Roles sans login. Il faut se connecter d'abord avec l'utilisateur postgrest.
-- Puis celui-ci usurpe une des identités suivantes suivant le role présent dans le JWT.
-- Lorsqu'une demande contient un JWT valide avec une revendication de rôle,
-- PostgREST passera au rôle de base de données avec ce nom pendant la durée de la demande HTTP avec la commande :
-- SET LOCAL ROLE adherent;
create role anonyme nologin;
create role adherent nologin;

-- L'utilisateur postgrest peut se connecter en tant que ...
grant anonyme to postgrest;
grant adherent to postgrest;

grant usage on schema public to anonyme;

alter default privileges in schema public
  grant select on tables to anonyme;
