User middleware, fix #54

This commit is contained in:
Lennart
2025-04-12 13:12:48 +02:00
parent 6369fb3542
commit 30b0bf5b56
2 changed files with 15 additions and 9 deletions

View File

@@ -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)

View File

@@ -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);