mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 22:52:22 +00:00
User middleware, fix #54
This commit is contained in:
@@ -33,7 +33,7 @@ pub async fn route_post_login<AP: AuthenticationProvider>(
|
|||||||
.validate_user_token(&form.username, &form.password)
|
.validate_user_token(&form.username, &form.password)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
session.insert("user", user).unwrap();
|
session.insert("user", user.id).unwrap();
|
||||||
Redirect::to(format!("/frontend/user/{}", &form.username))
|
Redirect::to(format!("/frontend/user/{}", &form.username))
|
||||||
.see_other()
|
.see_other()
|
||||||
.respond_to(&req)
|
.respond_to(&req)
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
use super::{AuthenticationProvider, User};
|
use super::{AuthenticationProvider, User};
|
||||||
use actix_session::Session;
|
use actix_session::Session;
|
||||||
use actix_web::{
|
use actix_web::{
|
||||||
dev::{forward_ready, Service, ServiceRequest, ServiceResponse, Transform},
|
|
||||||
http::header::Header,
|
|
||||||
FromRequest, HttpMessage,
|
FromRequest, HttpMessage,
|
||||||
|
dev::{Service, ServiceRequest, ServiceResponse, Transform, forward_ready},
|
||||||
|
http::header::Header,
|
||||||
};
|
};
|
||||||
use actix_web_httpauth::headers::authorization::{Authorization, Basic};
|
use actix_web_httpauth::headers::authorization::{Authorization, Basic};
|
||||||
use std::{
|
use std::{
|
||||||
future::{ready, Future, Ready},
|
future::{Future, Ready, ready},
|
||||||
pin::Pin,
|
pin::Pin,
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
};
|
};
|
||||||
use tracing::{info_span, Instrument};
|
use tracing::{Instrument, info_span};
|
||||||
|
|
||||||
pub struct AuthenticationMiddleware<AP: AuthenticationProvider> {
|
pub struct AuthenticationMiddleware<AP: AuthenticationProvider> {
|
||||||
auth_provider: Arc<AP>,
|
auth_provider: Arc<AP>,
|
||||||
@@ -81,10 +81,16 @@ where
|
|||||||
|
|
||||||
// Extract user from session cookie
|
// Extract user from session cookie
|
||||||
if let Ok(session) = Session::extract(req.request()).await {
|
if let Ok(session) = Session::extract(req.request()).await {
|
||||||
match session.get::<User>("user") {
|
match session.get::<String>("user") {
|
||||||
Ok(Some(user)) => {
|
Ok(Some(user_id)) => match auth_provider.get_principal(&user_id).await {
|
||||||
req.extensions_mut().insert(user);
|
Ok(Some(user)) => {
|
||||||
}
|
req.extensions_mut().insert(user);
|
||||||
|
}
|
||||||
|
Ok(None) => {}
|
||||||
|
Err(err) => {
|
||||||
|
dbg!(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
Ok(None) => {}
|
Ok(None) => {}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
dbg!(err);
|
dbg!(err);
|
||||||
|
|||||||
Reference in New Issue
Block a user