pub struct DMSCAuthModule { /* private fields */ }Expand description
Main authentication module for DMSC.
This module provides comprehensive authentication and authorization functionality, including JWT management, session management, permission management, and OAuth integration.
Implementations§
Source§impl DMSCAuthModule
impl DMSCAuthModule
Sourcepub async fn new(config: DMSCAuthConfig) -> DMSCResult<Self>
pub async fn new(config: DMSCAuthConfig) -> DMSCResult<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 DMSCResult containing the new DMSCAuthModule instance
§Errors
Returns an error if Redis cache creation fails when Redis backend is configured
Sourcepub fn with_config(config: DMSCAuthConfig) -> Self
pub fn with_config(config: DMSCAuthConfig) -> Self
Sourcepub async fn new_async(config: DMSCAuthConfig) -> DMSCResult<Self>
pub async fn new_async(config: DMSCAuthConfig) -> DMSCResult<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 DMSCResult containing the new DMSCAuthModule instance
§Errors
Returns an error if Redis cache creation fails when Redis backend is configured
Sourcepub fn revocation_list(&self) -> Arc<DMSCJWTRevocationList>
pub fn revocation_list(&self) -> Arc<DMSCJWTRevocationList>
Returns a reference to the JWT revocation list.
§Returns
An Arc
Sourcepub fn jwt_manager(&self) -> Arc<DMSCJWTManager>
pub fn jwt_manager(&self) -> Arc<DMSCJWTManager>
Returns a reference to the JWT manager.
§Returns
An Arc
Sourcepub fn session_manager(&self) -> Arc<RwLock<DMSCSessionManager>>
pub fn session_manager(&self) -> Arc<RwLock<DMSCSessionManager>>
Returns a reference to the session manager.
§Returns
An Arc<RwLock
Sourcepub fn permission_manager(&self) -> Arc<RwLock<DMSCPermissionManager>>
pub fn permission_manager(&self) -> Arc<RwLock<DMSCPermissionManager>>
Returns a reference to the permission manager.
§Returns
An Arc<RwLock
Sourcepub fn oauth_manager(&self) -> Arc<RwLock<DMSCOAuthManager>>
pub fn oauth_manager(&self) -> Arc<RwLock<DMSCOAuthManager>>
Returns a reference to the OAuth manager.
§Returns
An Arc<RwLock
Trait Implementations§
Source§impl DMSCModule for DMSCAuthModule
impl DMSCModule for DMSCAuthModule
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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCResult<()> indicating success or failure
Source§fn after_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + 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 DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn before_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn before_shutdown<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_ctx: &'life1 mut DMSCServiceContext,
) -> Pin<Box<dyn Future<Output = DMSCResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl<'py> IntoPyObject<'py> for DMSCAuthModule
impl<'py> IntoPyObject<'py> for DMSCAuthModule
Source§type Target = DMSCAuthModule
type Target = DMSCAuthModule
Source§type Output = Bound<'py, <DMSCAuthModule as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <DMSCAuthModule 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 DMSCAuthModule
impl PyClass for DMSCAuthModule
Source§impl PyClassImpl for DMSCAuthModule
impl PyClassImpl for DMSCAuthModule
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 DMSC.\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 DMSC.\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<DMSCAuthModule>
type ThreadChecker = SendablePyClass<DMSCAuthModule>
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 DMSCAuthModule
impl PyClassNewTextSignature for DMSCAuthModule
const TEXT_SIGNATURE: &'static str = "(config)"
Source§impl PyMethods<DMSCAuthModule> for PyClassImplCollector<DMSCAuthModule>
impl PyMethods<DMSCAuthModule> for PyClassImplCollector<DMSCAuthModule>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for DMSCAuthModule
impl PyTypeInfo for DMSCAuthModule
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 ServiceModule for DMSCAuthModule
impl ServiceModule for DMSCAuthModule
Source§fn is_critical(&self) -> bool
fn is_critical(&self) -> bool
Source§fn init(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn init(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn before_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn before_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn after_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn after_start(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn before_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn before_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
Source§fn after_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
fn after_shutdown(&mut self, _ctx: &mut DMSCServiceContext) -> DMSCResult<()>
impl DerefToPyAny for DMSCAuthModule
impl ExtractPyClassWithClone for DMSCAuthModule
Auto Trait Implementations§
impl Freeze for DMSCAuthModule
impl !RefUnwindSafe for DMSCAuthModule
impl Send for DMSCAuthModule
impl Sync for DMSCAuthModule
impl Unpin for DMSCAuthModule
impl !UnwindSafe for DMSCAuthModule
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