pub enum PermissionError {
AccessDenied {
permission: String,
resource: String,
},
RoleNotFound {
role: String,
},
PermissionNotFound {
permission: String,
},
InvalidFormat {
message: String,
},
Denied {
action: String,
resource: String,
message: String,
},
}Expand description
Permission and access-control errors.
Returned when an authenticated principal lacks the required permissions or roles to perform an operation.
Variants§
AccessDenied
The principal does not hold the required permission for the target resource.
RoleNotFound
The specified role does not exist in the role store.
PermissionNotFound
The specified permission identifier does not exist.
InvalidFormat
A permission string could not be parsed (e.g. missing resource:action separator).
Denied
General permission denial with a descriptive message.
Implementations§
Source§impl PermissionError
impl PermissionError
Sourcepub fn access_denied(
permission: impl Into<String>,
resource: impl Into<String>,
) -> Self
pub fn access_denied( permission: impl Into<String>, resource: impl Into<String>, ) -> Self
Create a new access denied error.
§Example
use auth_framework::errors::PermissionError;
let err = PermissionError::access_denied("write", "documents");
assert!(err.to_string().contains("write"));Sourcepub fn role_not_found(role: impl Into<String>) -> Self
pub fn role_not_found(role: impl Into<String>) -> Self
Create a new role not found error.
§Example
use auth_framework::errors::PermissionError;
let err = PermissionError::role_not_found("superadmin");
assert!(err.to_string().contains("superadmin"));Sourcepub fn permission_not_found(permission: impl Into<String>) -> Self
pub fn permission_not_found(permission: impl Into<String>) -> Self
Create a new permission not found error.
§Example
use auth_framework::errors::PermissionError;
let err = PermissionError::permission_not_found("delete_user");
assert!(err.to_string().contains("delete_user"));Sourcepub fn invalid_format(message: impl Into<String>) -> Self
pub fn invalid_format(message: impl Into<String>) -> Self
Create a new invalid format error.
§Example
use auth_framework::errors::PermissionError;
let err = PermissionError::invalid_format("missing resource:action separator");
assert!(err.to_string().contains("separator"));Trait Implementations§
Source§impl Debug for PermissionError
impl Debug for PermissionError
Source§impl Display for PermissionError
impl Display for PermissionError
Source§impl Error for PermissionError
impl Error for PermissionError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Source§impl From<PermissionError> for AuthError
impl From<PermissionError> for AuthError
Source§fn from(source: PermissionError) -> Self
fn from(source: PermissionError) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for PermissionError
impl RefUnwindSafe for PermissionError
impl Send for PermissionError
impl Sync for PermissionError
impl Unpin for PermissionError
impl UnsafeUnpin for PermissionError
impl UnwindSafe for PermissionError
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
Mutably borrows from an owned value. Read more
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>
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 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>
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.