Aller au contenu

app.code_enrolement

Code à usage unique permettant d’enrôler un appareil. Conservé en empreinte, jamais en clair.

Name Type Default Nullable Children Parents Comment
id uuid app.uuid_v7() false Identifiant du code (UUID v7).
organisation_id uuid false app.utilisateur app.appareil Organisation propriétaire de la ligne. Sert à l’isolation par RLS (EC-032) et au filtrage de la synchronisation.
utilisateur_id uuid false app.utilisateur Agent pour lequel le code a été généré.
empreinte_code text false Empreinte SHA-256 du code, en hexadécimal.
expire_le timestamp with time zone false Date d’expiration du code (24 heures).
utilise_le timestamp with time zone true Date d’utilisation. Nulle tant que le code n’a pas servi.
appareil_id uuid true app.appareil Appareil enrôlé avec ce code.
cree_par uuid false app.utilisateur Administrateur qui a généré le code. Différent de l’agent.
cree_le timestamp with time zone now() false Date de création de la ligne.
modifie_le timestamp with time zone now() false Date de la dernière modification, tenue par un déclencheur.
Name Type Definition
code_enrolement_check CHECK CHECK (((utilise_le IS NULL) = (appareil_id IS NULL)))
code_enrolement_check1 CHECK CHECK ((cree_par <> utilisateur_id))
code_enrolement_empreinte_code_check CHECK CHECK ((empreinte_code ~ ‘^[0-9a-f]{64}$’::text))
code_enrolement_organisation_id_cree_par_fkey FOREIGN KEY FOREIGN KEY (organisation_id, cree_par) REFERENCES app.utilisateur(organisation_id, id)
code_enrolement_organisation_id_utilisateur_id_fkey FOREIGN KEY FOREIGN KEY (organisation_id, utilisateur_id) REFERENCES app.utilisateur(organisation_id, id)
code_enrolement_organisation_id_appareil_id_fkey FOREIGN KEY FOREIGN KEY (organisation_id, appareil_id) REFERENCES app.appareil(organisation_id, id)
code_enrolement_pkey PRIMARY KEY PRIMARY KEY (id)
Name Definition
code_enrolement_pkey CREATE UNIQUE INDEX code_enrolement_pkey ON app.code_enrolement USING btree (id)
Name Definition
journal CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.code_enrolement FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser()
modifie_le CREATE TRIGGER modifie_le BEFORE UPDATE ON app.code_enrolement FOR EACH ROW EXECUTE FUNCTION app.tg_modifie_le()
erDiagram

"app.code_enrolement" }o--|| "app.utilisateur" : "FOREIGN KEY (organisation_id, cree_par) REFERENCES app.utilisateur(organisation_id, id)"
"app.code_enrolement" }o--|| "app.utilisateur" : "FOREIGN KEY (organisation_id, utilisateur_id) REFERENCES app.utilisateur(organisation_id, id)"
"app.code_enrolement" }o--|| "app.appareil" : "FOREIGN KEY (organisation_id, appareil_id) REFERENCES app.appareil(organisation_id, id)"

"app.code_enrolement" {
  uuid id "Identifiant du code (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire de la ligne. Sert à l'isolation par RLS (EC-032) et au filtrage de la synchronisation."
  uuid utilisateur_id FK "Agent pour lequel le code a été généré."
  text empreinte_code "Empreinte SHA-256 du code, en hexadécimal."
  timestamp_with_time_zone expire_le "Date d'expiration du code (24 heures)."
  timestamp_with_time_zone utilise_le "Date d'utilisation. Nulle tant que le code n'a pas servi."
  uuid appareil_id FK "Appareil enrôlé avec ce code."
  uuid cree_par FK "Administrateur qui a généré le code. Différent de l'agent."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
}
"app.utilisateur" {
  uuid id "Identifiant de l'utilisateur (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire de la ligne. Sert à l'isolation par RLS (EC-032) et au filtrage de la synchronisation."
  uuid keycloak_sub "Identifiant du compte Keycloak (revendication sub). Identique d'une organisation à l'autre pour un compte externe."
  text identifiant "Identifiant local de connexion, sans le code de l'organisation : 3 à 32 caractères parmi a-z, 0-9, _ et -. Unique dans l'organisation."
  text nom_affiche "Nom affiché dans l'application."
  text telephone "Numéro de téléphone. Attribut du compte, jamais son identifiant."
  text statut "Statut du compte : actif, suspendu ou desactive."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
}
"app.appareil" {
  uuid id "Identifiant de l'appareil (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire de la ligne. Sert à l'isolation par RLS (EC-032) et au filtrage de la synchronisation."
  text code "Code court unique de l'appareil, utilisé dans les références provisoires (EC-009)."
  uuid utilisateur_id FK "Agent titulaire de l'appareil."
  text modele "Modèle du téléphone."
  boolean gnss_bifrequence "Vrai si le téléphone dispose d'un récepteur GNSS bifréquence (GPS-03, GPS-05)."
  text version_application "Dernière version de l'application terrain connue."
  text statut "Statut : actif, revoque ou remplace."
  timestamp_with_time_zone enrole_le "Date d'enrôlement."
  timestamp_with_time_zone revoque_le "Date de révocation. Nulle si l'appareil n'est pas révoqué."
  uuid revoque_par FK "Utilisateur qui a révoqué l'appareil."
  text motif_revocation "Motif de la révocation, obligatoire dès qu'elle a lieu."
  bigint derniere_sequence "Dernière séquence de commande traitée pour cet appareil. Ne diminue jamais."
  timestamp_with_time_zone derniere_synchro "Date de la dernière synchronisation."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
}

Generated by tbls