Enum hdk::prelude::capability::CapGrant
[−]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
impl CapGrant
impl CapGrant
pub 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
impl<'de> Deserialize<'de> for CapGrant
impl<'de> Deserialize<'de> for CapGrant
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>,
impl From<ZomeCallCapGrant> for CapGrant
impl From<ZomeCallCapGrant> for CapGrant
fn from(zccg: ZomeCallCapGrant) -> CapGrant
fn from(zccg: ZomeCallCapGrant) -> CapGrant
Create a new ZomeCall capability grant
impl Serialize for CapGrant
impl Serialize for CapGrant
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 StructuralEq for CapGrant
impl StructuralPartialEq for CapGrant
Auto Trait Implementations
impl RefUnwindSafe for CapGrant
impl Send for CapGrant
impl Sync for CapGrant
impl Unpin for CapGrant
impl UnwindSafe for CapGrant
Blanket Implementations
impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
type ArchivedMetadata = ()
type ArchivedMetadata = ()
fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
sourceimpl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T>where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T>where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourcefn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T>where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T>where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T>where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T>where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
T: Future, type Output = <T as Future>::Output;
sourcefn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T>where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T>where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;