mirror of
https://github.com/actix/examples
synced 2025-02-02 09:39:03 +01:00
Merge pull request #315 from david-perez/master
Refactor FromRequest for LoggedUser in simple-auth-server
This commit is contained in:
commit
20301845fc
@ -1,5 +1,3 @@
|
|||||||
use std::pin::Pin;
|
|
||||||
|
|
||||||
use actix_identity::Identity;
|
use actix_identity::Identity;
|
||||||
use actix_web::{
|
use actix_web::{
|
||||||
dev::Payload, error::BlockingError, web, Error, FromRequest, HttpRequest,
|
dev::Payload, error::BlockingError, web, Error, FromRequest, HttpRequest,
|
||||||
@ -7,7 +5,7 @@ use actix_web::{
|
|||||||
};
|
};
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use diesel::PgConnection;
|
use diesel::PgConnection;
|
||||||
use futures::future::Future;
|
use futures::future::{Ready, ok, err};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use crate::errors::ServiceError;
|
use crate::errors::ServiceError;
|
||||||
@ -27,18 +25,17 @@ pub type LoggedUser = SlimUser;
|
|||||||
impl FromRequest for LoggedUser {
|
impl FromRequest for LoggedUser {
|
||||||
type Config = ();
|
type Config = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
type Future = Pin<Box<dyn Future<Output = Result<LoggedUser, Error>>>>;
|
type Future = Ready<Result<LoggedUser, Error>>;
|
||||||
|
|
||||||
fn from_request(req: &HttpRequest, pl: &mut Payload) -> Self::Future {
|
fn from_request(req: &HttpRequest, pl: &mut Payload) -> Self::Future {
|
||||||
let fut = Identity::from_request(req, pl);
|
if let Ok(identity) = Identity::from_request(req, pl).into_inner() {
|
||||||
|
if let Some(user_json) = identity.identity() {
|
||||||
Box::pin(async move {
|
if let Ok(user) = serde_json::from_str(&user_json) {
|
||||||
if let Some(identity) = fut.await?.identity() {
|
return ok(user);
|
||||||
let user: LoggedUser = serde_json::from_str(&identity)?;
|
}
|
||||||
return Ok(user);
|
}
|
||||||
};
|
}
|
||||||
Err(ServiceError::Unauthorized.into())
|
err(ServiceError::Unauthorized.into())
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user