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