fistinc_auth/api/models/
identity.rs1use actix_http::Payload;
2use actix_web::{Error, FromRequest, HttpRequest};
3use email_address::EmailAddress;
4use futures::future::{ok, Ready};
5use uuid::Uuid;
6use crate::domain::entity::Role;
7
8pub struct UserIdentity {
9 pub email: EmailAddress,
10 pub role: Role,
11 pub user_id: Uuid,
12}
13
14impl FromRequest for UserIdentity {
15 type Error = Error;
16 type Future = Ready<Result<UserIdentity, Error>>;
17 type Config = ();
18
19 #[inline]
20 fn from_request(req: &HttpRequest, _payload: &mut Payload) -> Self::Future {
21 let data = req
22 .extensions()
23 .get::<UserIdentity>()
24 .map(|user_identity| UserIdentity {
25 email: user_identity.email.clone(),
26 role: user_identity.role.clone(),
27 user_id: user_identity.user_id,
28 })
29 .unwrap(); ok(data)
31 }
32}