pub enum CapGrant {
ChainAuthor(HoloHash<Agent>),
RemoteAgent(ZomeCallCapGrant),
}Expand description
Represents a potentially valid access grant to a zome call. Zome call response will be Unauthorized without a valid grant.
The CapGrant is not always a dedicated entry in the chain. Notably AgentPubKey entries in the current chain act like root access to local zome calls.
A CapGrant is valid if it matches the function, agent and secret for a given zome call.
See .is_valid()
Variants§
ChainAuthor(HoloHash<Agent>)
Grants the capability of calling every extern to the calling agent, provided the calling
agent is the local chain author.
This grant is compared to the current Entry::Agent entry on the source chain.
RemoteAgent(ZomeCallCapGrant)
Any agent other than the chain author is attempting to call an extern. The pubkey of the calling agent is secured by the cryptographic handshake at the network layer and the caller must provide a secret that we check for in a private entry in the local chain.
Implementations§
Source§impl CapGrant
impl CapGrant
Sourcepub fn is_valid(
&self,
check_function: &(ZomeName, FunctionName),
check_agent: &HoloHash<Agent>,
check_secret: Option<&CapSecret>,
) -> bool
pub fn is_valid( &self, check_function: &(ZomeName, FunctionName), check_agent: &HoloHash<Agent>, check_secret: Option<&CapSecret>, ) -> bool
Given a grant, is it valid in isolation? In a world of CRUD, some new entry might update or delete an existing one, but we can check if a grant is valid in a standalone way.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for CapGrant
impl<'de> Deserialize<'de> for CapGrant
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<CapGrant, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<CapGrant, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl From<ZomeCallCapGrant> for CapGrant
impl From<ZomeCallCapGrant> for CapGrant
Source§fn from(zccg: ZomeCallCapGrant) -> CapGrant
fn from(zccg: ZomeCallCapGrant) -> CapGrant
Create a new ZomeCall capability grant
Source§impl Serialize for CapGrant
impl Serialize for CapGrant
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for CapGrant
impl StructuralPartialEq for CapGrant
Auto Trait Implementations§
impl Freeze for CapGrant
impl RefUnwindSafe for CapGrant
impl Send for CapGrant
impl Sync for CapGrant
impl Unpin for CapGrant
impl UnwindSafe for CapGrant
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
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.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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.