Skip to main content

TpeResponse

Struct TpeResponse 

Source
pub struct TpeResponse<'a>(/* private fields */);
Available on crate feature tpe only.
Expand description

A partial version of crate::Response.

This feature is experimental. For more information see https://github.com/cedar-policy/rfcs/blob/main/README.md#experimental-features

Implementations§

Source§

impl TpeResponse<'_>

Source

pub fn decision(&self) -> Option<Decision>

Attempt to get the authorization decision

Source

pub fn reauthorize( &self, request: &Request, entities: &Entities, ) -> Result<Response, TpeReauthorizationError>

Perform reauthorization

Source

pub fn residual_policies(&self) -> impl Iterator<Item = Policy> + '_

Return residuals as Policys.

Each returned Policy inherits its PolicyId and annotations from the corresponding input policy. Its scope is unconstrained and its condition is a single when clause containing the residual expression.

Use TpeResponse::nontrivial_residual_policies to skip trivially true or false residuals.

The returned policies can be converted to PST for structured inspection of the residual expression tree:

let response = policy_set.tpe(&request, &entities, &schema)?;
for policy in response.residual_policies() {
    let pst_policy = policy.to_pst()?;
    for clause in pst_policy.body().clauses() {
        // inspect the residual expression via pst::Clause / pst::Expr
    }
}
Source

pub fn nontrivial_residual_policies(&self) -> impl Iterator<Item = Policy> + '_

Returns an iterator of non-trivial (meaning more than just true or false) residuals as Policys.

Each returned Policy inherits its PolicyId and annotations from the corresponding input policy. Its scope is unconstrained and its condition is a single when clause containing the residual expression.

Call Policy::to_pst() on each result to get a crate::pst::Policy for structured inspection. Residual expressions may contain crate::pst::Expr::ResidualError nodes indicating subexpressions that would error at runtime; use crate::pst::Expr::has_error() to check.

Trait Implementations§

Source§

impl<'a> Clone for TpeResponse<'a>

Source§

fn clone(&self) -> TpeResponse<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for TpeResponse<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> RefCast for TpeResponse<'a>

Source§

type From = Response<'a>

Source§

fn ref_cast(_from: &Self::From) -> &Self

Source§

fn ref_cast_mut(_from: &mut Self::From) -> &mut Self

Auto Trait Implementations§

§

impl<'a> Freeze for TpeResponse<'a>

§

impl<'a> RefUnwindSafe for TpeResponse<'a>

§

impl<'a> Send for TpeResponse<'a>

§

impl<'a> Sync for TpeResponse<'a>

§

impl<'a> Unpin for TpeResponse<'a>

§

impl<'a> UnsafeUnpin for TpeResponse<'a>

§

impl<'a> UnwindSafe for TpeResponse<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.