1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! Traits ACL (Access Control List) pour Gradatum.
//!
//! ## Design
//!
//! Les traits ACL vivent dans `gradatum-core` pour permettre aux crates aval
//! (`gradatum-vault`, `gradatum-curator`) de dépendre des interfaces sans importer
//! `gradatum-acl-policy` (anti-cycle).
//!
//! `allow_read` est le point d'entrée principal consommé par `gradatum-vault`.
//! Les implémentations multi-tenant avec règles ACL complètes vivent dans `gradatum-acl-policy`.
//!
//! ## ACLFilter
//!
//! `ACLFilter` généralise le visibility marker `personal-classified` du prédécesseur
//! (legacy vault v1.6.2, R13) — au lieu d'un marqueur hardcodé, le filtre est pluggable
//! via ce trait.
use crateNote;
use crateBearerId;
/// Politique de contrôle d'accès à une note.
///
/// Implémentée par `gradatum-acl-policy` pour les déploiements multi-tenant.
///
/// En single-tenant, `gradatum-vault` utilise une implémentation permissive par défaut
/// (`PermissivePolicy`) — remplacer par une `AclPolicy` stricte pour les déploiements multi-tenant.
/// Filtre de visibilité sur une liste de notes.
///
/// Généralise le visibility marker `personal-classified` du legacy vault v1.6.2 (R13).
/// Au lieu d'un marqueur hardcodé, la logique de filtrage est injectée via ce trait.
///
/// Utilisé par `gradatum-vault` dans les endpoints de listing pour masquer les notes
/// non-accessibles au bearer courant.