actix_identity/
identity_ext.rs

1use actix_web::{dev::ServiceRequest, guard::GuardContext, HttpMessage, HttpRequest};
2
3use crate::{error::GetIdentityError, Identity};
4
5/// Helper trait to retrieve an [`Identity`] instance from various `actix-web`'s types.
6pub trait IdentityExt {
7    /// Retrieve the identity attached to the current session, if available.
8    fn get_identity(&self) -> Result<Identity, GetIdentityError>;
9}
10
11impl IdentityExt for HttpRequest {
12    fn get_identity(&self) -> Result<Identity, GetIdentityError> {
13        Identity::extract(&self.extensions())
14    }
15}
16
17impl IdentityExt for ServiceRequest {
18    fn get_identity(&self) -> Result<Identity, GetIdentityError> {
19        Identity::extract(&self.extensions())
20    }
21}
22
23impl IdentityExt for GuardContext<'_> {
24    fn get_identity(&self) -> Result<Identity, GetIdentityError> {
25        Identity::extract(&self.req_data())
26    }
27}