pub struct RiAuthModule { /* private fields */ }Expand description
Main authentication module for Ri.
This module provides comprehensive authentication and authorization functionality, including JWT management, session management, permission management, and OAuth integration.
Implementations§
Source§impl RiAuthModule
impl RiAuthModule
Sourcepub async fn new(config: RiAuthConfig) -> RiResult<Self>
pub async fn new(config: RiAuthConfig) -> RiResult<Self>
Creates a new authentication module with the given configuration.
Performance Note: This method creates a permission manager using the synchronous
new() method which uses blocking_write during initialization. For async contexts,
consider using new_async() to avoid blocking the runtime.
§Parameters
config: The authentication configuration to use
§Returns
A RiResult containing the new RiAuthModule instance
§Errors
Returns an error if Redis cache creation fails when Redis backend is configured
Sourcepub fn with_config(config: RiAuthConfig) -> Self
pub fn with_config(config: RiAuthConfig) -> Self
Sourcepub async fn new_async(config: RiAuthConfig) -> RiResult<Self>
pub async fn new_async(config: RiAuthConfig) -> RiResult<Self>
Creates a new authentication module with the given configuration asynchronously.
This method is preferred for async contexts as it avoids blocking the runtime
during permission manager initialization by using the async new_async() method.
§Parameters
config: The authentication configuration to use
§Returns
A RiResult containing the new RiAuthModule instance
§Errors
Returns an error if Redis cache creation fails when Redis backend is configured
Sourcepub fn revocation_list(&self) -> Arc<RiJWTRevocationList>
pub fn revocation_list(&self) -> Arc<RiJWTRevocationList>
Returns a reference to the JWT revocation list.
§Returns
An Arc
Sourcepub fn jwt_manager(&self) -> Arc<RiJWTManager>
pub fn jwt_manager(&self) -> Arc<RiJWTManager>
Returns a reference to the JWT manager.
§Returns
An Arc
Sourcepub fn session_manager(&self) -> Arc<RwLock<RiSessionManager>>
pub fn session_manager(&self) -> Arc<RwLock<RiSessionManager>>
Returns a reference to the session manager.
§Returns
An Arc<RwLock
Sourcepub fn permission_manager(&self) -> Arc<RwLock<RiPermissionManager>>
pub fn permission_manager(&self) -> Arc<RwLock<RiPermissionManager>>
Returns a reference to the permission manager.
§Returns
An Arc<RwLock
Sourcepub fn oauth_manager(&self) -> Arc<RwLock<RiOAuthManager>>
pub fn oauth_manager(&self) -> Arc<RwLock<RiOAuthManager>>
Returns a reference to the OAuth manager.
§Returns
An Arc<RwLock
Trait Implementations§
Source§impl<'py> IntoPyObject<'py> for RiAuthModule
impl<'py> IntoPyObject<'py> for RiAuthModule
Source§type Target = RiAuthModule
type Target = RiAuthModule
Source§type Output = Bound<'py, <RiAuthModule as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <RiAuthModule as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for RiAuthModule
impl PyClass for RiAuthModule
Source§impl PyClassImpl for RiAuthModule
impl PyClassImpl for RiAuthModule
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = c"Main authentication module for Ri.\n\nThis module provides comprehensive authentication and authorization functionality,\nincluding JWT management, session management, permission management, and OAuth integration.\x00"
const RAW_DOC: &'static CStr = c"Main authentication module for Ri.\n\nThis module provides comprehensive authentication and authorization functionality,\nincluding JWT management, session management, permission management, and OAuth integration.\x00"
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type ThreadChecker = SendablePyClass<RiAuthModule>
type ThreadChecker = SendablePyClass<RiAuthModule>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature for RiAuthModule
impl PyClassNewTextSignature for RiAuthModule
const TEXT_SIGNATURE: &'static str = "(config)"
Source§impl PyMethods<RiAuthModule> for PyClassImplCollector<RiAuthModule>
impl PyMethods<RiAuthModule> for PyClassImplCollector<RiAuthModule>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for RiAuthModule
impl PyTypeInfo for RiAuthModule
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.Source§impl RiModule for RiAuthModule
impl RiModule for RiAuthModule
Source§fn is_critical(&self) -> bool
fn is_critical(&self) -> bool
Indicates whether the authentication module is critical.
The authentication module is non-critical, meaning that if it fails to initialize or operate, it should not break the entire application. This allows the core functionality to continue even if authentication features are unavailable.
§Returns
false since authentication is non-critical
Source§fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Initializes the authentication module asynchronously.
This method performs the following steps:
- Loads configuration from the service context
- Updates the module configuration if provided
- Reinitializes the JWT manager with the new configuration
- Initializes OAuth providers if configured
§Parameters
ctx: The service context containing configuration
§Returns
A RiResult<()> indicating success or failure
Source§fn after_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn after_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn before_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn after_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn after_start<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut RiServiceContext,
) -> Pin<Box<dyn Future<Output = RiResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl ServiceModule for RiAuthModule
impl ServiceModule for RiAuthModule
Source§fn is_critical(&self) -> bool
fn is_critical(&self) -> bool
Source§fn init(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
fn init(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
Source§fn start(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
fn start(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
Source§fn shutdown(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
fn shutdown(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
Source§fn before_start(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
fn before_start(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
Source§fn after_start(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
fn after_start(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
Source§fn before_shutdown(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
fn before_shutdown(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
Source§fn after_shutdown(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
fn after_shutdown(&mut self, _ctx: &mut RiServiceContext) -> RiResult<()>
impl DerefToPyAny for RiAuthModule
impl ExtractPyClassWithClone for RiAuthModule
Auto Trait Implementations§
impl Freeze for RiAuthModule
impl !RefUnwindSafe for RiAuthModule
impl Send for RiAuthModule
impl Sync for RiAuthModule
impl Unpin for RiAuthModule
impl UnsafeUnpin for RiAuthModule
impl !UnwindSafe for RiAuthModule
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§const NAME: &'static str = T::NAME
const NAME: &'static str = T::NAME
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more