Skip to content

Commit 2ee63a6

Browse files
authored
Merge pull request #301 from AdaWorldAPI/claude/patient-identity-architecture-r8lhi5
ogar-rbac: mint the canonical RBAC authority, fed by ogar-auth's user
2 parents 03320b9 + 3096b2d commit 2ee63a6

6 files changed

Lines changed: 841 additions & 0 deletions

File tree

‎Cargo.toml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ members = [
3333
"crates/ogar-render-typst",
3434
"crates/ogar-loco",
3535
"crates/ogar-r2il",
36+
"crates/ogar-rbac",
3637
"crates/ogar-ro",
3738
"crates/ogar-elk",
3839
"crates/ogar-osm",

‎crates/ogar-auth/Cargo.toml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ description = "OGAR auth arm: the reusable authentication SDK for OGAR consumers
1616
# in-workspace sibling.
1717
ogar-encryption = { path = "../ogar-encryption" }
1818

19+
# The canonical identity envelope (`auth::ActorContext`) this crate PRODUCES.
20+
# Reused, never re-declared: a second (subject, tenant, roles) type is exactly
21+
# the parallel identity normalizer the ownership ruling forbids. Downward dep
22+
# only — the contract is zero-dep and never reaches back into OGAR. Same git
23+
# pattern as `ogar-class-view`.
24+
lance-graph-contract = { git = "https://github.com/AdaWorldAPI/lance-graph", branch = "claude/patient-identity-architecture-r8lhi5" }
25+
1926
# Argon2id PHC hash+verify (the login-credential path — distinct from the
2027
# envelope KDF). Default features carry `password-hash` + `rand` (OsRng salt).
2128
argon2 = "0.5"

‎crates/ogar-auth/src/lib.rs‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
pub mod legacy;
5252
pub mod password;
5353
pub mod totp;
54+
pub mod user;
5455

5556
// ── Forward suite: re-exported via `ogar-encryption` ────────────────────────
5657
// Reused wholesale, never re-implemented (see crate docs). A consumer that
@@ -104,4 +105,12 @@ pub type AuthResult<T> = Result<T, AuthError>;
104105
/// The adapter itself (token validation, JWKS fetch, claim mapping) lands as a
105106
/// sibling crate under the `ogar-adapter-*` convention when the endgame is
106107
/// scheduled — it is out of scope for the local auth substrate this crate is.
108+
///
109+
/// **The convergence point is now shipped**, as [`crate::user`]: an adapter's
110+
/// job ends at producing an [`AuthBinding`](crate::user::AuthBinding), which
111+
/// [`UserStore::resolve`](crate::user::UserStore::resolve) maps to the canonical
112+
/// [`User`](crate::user::User); the envelope every path converges on is
113+
/// [`AuthenticatedUser::actor_context`](crate::user::AuthenticatedUser::actor_context).
114+
/// This module stays an empty marker: what is still out of scope here is
115+
/// unchanged — token validation, JWKS fetch and claim parsing.
107116
pub mod federation {}

0 commit comments

Comments
 (0)