pub struct MembershipConfig {
pub contract: u32,
pub log_identity: String,
pub log_epoch: u64,
pub workspace_kind: String,
pub channel_kind: String,
pub credential_path: PathBuf,
pub page_rows: u32,
pub page_bytes: u32,
pub max_decisions: usize,
pub connect_workspace: Option<String>,
pub channels: Vec<MembershipChannelConfig>,
pub conversations: Vec<MembershipConversationConfig>,
}Expand description
[auth.lys.membership]: channel membership bound to the verified holder
and the placed resource (ACCESS-006 R1).
The mapping is explicit: a channel is membership-protected only when it is
listed here with its workspace and placed resource, and a participant
conversation is placed under a channel only when it is listed here. No
mapping is guessed from a subject string, and a readable parent is never
taken as membership of a child. Every bound is required and positive;
none has a default. Validated whole when the membership gate is built at
start (crate::auth_membership::MembershipGate::new).
Fields§
§contract: u32The membership contract version this liminal speaks; it must equal
lys_pass::membership::CONTRACT_VERSION.
log_identity: StringThe identity of the Lys grant log decisions are asked from.
log_epoch: u64The reset epoch of that grant log.
workspace_kind: StringThe product schema’s workspace kind, as Lys places it.
channel_kind: StringThe product schema’s channel kind, as Lys places it.
credential_path: PathBufPath to this liminal’s app credential for the Lys membership routes,
read once at start. Its bytes never appear in a Debug.
page_rows: u32Most rows one membership page carries; positive.
page_bytes: u32Most encoded row bytes and HTTP answer bytes; positive. The same cap bounds reading the app credential before opening any protected route.
max_decisions: usizeMost decisions the local membership index retains at once; positive. A decision past it is refused by name before anything is allocated for it, never evicted to make room.
connect_workspace: Option<String>The workspace a Lys-admitted Connect must hold a current grant in
(scoped guest admission). Absent, Connect asks no admission and a
protected channel is still decided per act.
channels: Vec<MembershipChannelConfig>The membership-protected channels.
conversations: Vec<MembershipConversationConfig>Participant conversations placed under a protected channel.
Trait Implementations§
Source§impl Clone for MembershipConfig
impl Clone for MembershipConfig
Source§impl Debug for MembershipConfig
impl Debug for MembershipConfig
Source§impl<'de> Deserialize<'de> for MembershipConfig
impl<'de> Deserialize<'de> for MembershipConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for MembershipConfig
Source§impl PartialEq for MembershipConfig
impl PartialEq for MembershipConfig
impl StructuralPartialEq for MembershipConfig
Auto Trait Implementations§
impl Freeze for MembershipConfig
impl RefUnwindSafe for MembershipConfig
impl Send for MembershipConfig
impl Sync for MembershipConfig
impl Unpin for MembershipConfig
impl UnsafeUnpin for MembershipConfig
impl UnwindSafe for MembershipConfig
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.