From 96cc0c3c46311f556d14701e060f1c7e1e7cbf18 Mon Sep 17 00:00:00 2001 From: Romain Mallard Date: Tue, 3 Feb 2026 13:02:49 +0100 Subject: [PATCH] edit login and logout logic for refresh token --- db/1.sqlite | Bin 4927488 -> 4927488 bytes db/auth_copy_2.sqlite-shm | Bin 32768 -> 32768 bytes db/auth_copy_2.sqlite-wal | Bin 41232 -> 2422592 bytes src/main.rs | 3 +- src/utils/auth.rs | 105 +++++++++++++++++++++++++++----------- 5 files changed, 77 insertions(+), 31 deletions(-) diff --git a/db/1.sqlite b/db/1.sqlite index 5366c3997acb38ade17fef1646273a8db97a22b5..3b25750faf7fa012a33e11a43d3f9544e5127520 100644 GIT binary patch delta 7877 zcmeHLU2GIp6rS1n+uiQWnX=v8wo5xpp|phpJ2SieSx^e4{FOf&43emArK?n-OS$U8Lrb#zhH@K|(F@f3fIyeG9Qyp{URH{ZW+PN@>w zw3y%5+TGKY+}+)^yFC?EOWf@{`;&d`-CfM^`iC-z{w0o`-GQ1eX0}atmCYA&?8)&Uvn@Km zGl4H1aCYS6hjfw1m9Up$W>)}de-??wVws#;x{&SKv|_e1iI$$00qASYX1UAxI5m{< z28D&wk%^bA%9$0@U?-i*F`H(~u2^zR+ZpwVYRgFA2wuD}=^ zgP-6H_yP`S*I)p4!dKc&?GNofyaJsNri`}7RRq08``oXKukywYdH%8_f`%o@S$r;`C!oW8|hEWg4S3{gbR_ z=^tk_%4GUSj%Jzq5ogr2^uwNkObDI%5Ca)O=m#B*V#7?MtYPaPI!iG1p#q_Vt(G#A zejuw;PSR6sX&E-s2Qw<;A^ii|rpgQ`;T`f(+(Lk7tRpKzz)k(9Sqw4hJ|#u)^E9)V zy0sv}pBnK-4?&mL)7`Tx+2iGD_P*ZU?fv?3T@fmIrnhhH?%&bd_i7vb$!U%sGYdo^ z%x_Qj_jkUO4C-F$yrq}s=bUo`@$@t(OxnJRI7z!sY+_fHm7eZ;a8Q8N*37^&{P9-#$wg@b?L zFZdm9)BE{2?PEt_G+$8pg31@vgMxZ^&7T@Qs=HJ*HGXuq&?dE{lw)s|%46~w`CWOt zyjHH23#8l9H_}OIzx1NiGSv!haD&%nw58Igi&W=~x9SsSgYi^q-^pC0-q?`q6H8c8 zV|}hqEMYbp>v9o05wnc7xltKpO)g?3Vy4l`qOu)^MUiOvYMJv;!c4xx_K=hP&`9 z+=QRu`c(TJJc4#JKjq_pw!th(;Ca!Vc}k+-;T869iGrJ#*+Ucrx94>v$P;uC6bOn0 zC4w?Rg`k_DhoF~W0YM)@m7qot2{MmJuu` zXb_ALoI$XH;7o$E2v!oDO|Xh!HNhH!a|q5QSW9po!TAIi5R4Ku30eegf-!<|f^`Jz z2{sUHB$yz$kl-SMPY`_aEG|~|@~6+ao0`tJBzC1&hdY)vRqemAw28_RDod#}Q&~o( zh01a&E2ylbvg+K8rK^n#MVmQAyDHGz)CJh1U4^;yW98vI2R;4;^6(AK)Qt#uW=Imx shiyR|?u6FT;rm+avm&jyis9#=^$DZgO-BRt)5ZT^w9cJ}))kTe07J6kp#T5? delta 6230 zcmeI0OK1~e5XZmGW*>R%PHXJTsEyVp={sqR)>>_>)@bUZ_&@|7v|6;F4K!5{J(LRL zLB*D(M7^jNy(m2d3?76L4+V|Ti{e32DPAgqt)M7a@T(x|p-{Bqq08=nKX$)amYtp7 z%zWGX`mUvytKXd)X3U!6lDO_L#wrFXLuFxBeff)~8q6U-Ww0Ec=_B?RPQP;1w#Sw$ zKUH69PoxL-LHl6xQJ}$>90@cO&hta+igZ{JMveE*YGa?~GCpWUf?`-@pHU;%l=oHT zD+ST0&{xXG#zx`%{+_n>6CFq5U8g&`6Ky@6@jgeVjHJl}~h&fp77!ng^V z37T2S{=Se8v^tIP8jtWXWe;3~qxrT@Ugf%a;@xKsAMZ>|k2#81Ds;!=Cx2XM<{;`n z?HpFoEu8E~B-)O3@rJmKZW^9_V`5$BR?{oT}wO}(oH_ym+RTQ%wsurpZ)UK)u1o`d> zhU!DB>sPKRR3*k|QvUcW4+kpC;46HB33$twLs`CMAY%e$0%Za?nMds3N*9ZVLsu8sW@M-Q}W>7LKAON!Nd z;a;QBzsqYJdi*u5kHy|u`v^%uvLJ~_RwM~YMpBSeBpZ?)$${iV(vWl{K*~YNMOuL5 zLRyHFhm?<0fK-T7gtQ3BjkFkP3DQ!eVk8gJGNk25B}glfN|C%sJ|sU<8B#e?1yUta z6;d@)4N?Fph*XOdLRyIwMp}im8mSIx4N^VQTBHV~bx7;)Q=`%=+)JyG$dE;Ha$jo6 z{_PR(g|Vgx*9NX8u8mxqxSF{(b49tfaBWSGHN`v+7hY$wKE-%n_7Kj(eyGr=;MPC+ z4s%>9XTh>*V*Y@h!>HqVD>LLRrZTwz diff --git a/db/auth_copy_2.sqlite-shm b/db/auth_copy_2.sqlite-shm index 2b840860fba4e00e53e4111e8da0e6deedea5f6e..15fdc1f6bec934d465ccc495290592ae3b376d5d 100644 GIT binary patch literal 32768 zcmeI52apv-5QhK1k936N$VbjO=bY1#Gm-=)O9siJAQ+IGgOZe-k(?w5l9M7iXUQ2A z5Zo;t-P*eKo*-2gucxZ3r+a#OdcK{#_v)(NZpitpu-ke|2n1IaAdc1V+pv1@#JWlE zjIVlU#niYJLTC5fR=Moa5?4e1WxSo+Zg$@1j`oKaNc?9fvZbR~64jC*OQKm4;{|kB zdF)(HF)>E_x~8=S1XvQml8BZ>vcy-Py;fMUw%=Wcv5hwM*?eppjoqZE;>hiLU-&gI<=QYolT6~G|bv<_-&fLzvi8FbfW6u7I#<}Nt*~af&)2nY{ z!>ZXm=4Ct2m5Fg{ul2qBX1=M*SKGvSX?H$%Tv+$0SB+kNlheJH+kV;k?tI4f%IoD1 zuU@ZtPJehg!W(zy@}(bMJ~M8#S57k?7CZNt+x{uSM2Xh_8i-9`<%A% zduit!XWzt|e9kdz32jP12`B+2pahhF5>Nt4KnW-TC7=Y9fD%vwNNt4KnW-TC7=Y9fD%vwNmQ9RXU;=1PKOD2U=HfiftE%BX=_ zsEc}NjJMDf&Cw2>&=uX$6TQ&~AD|yT!Y3GrK^TtFn1D%`hOaOKvoHtqu+(~b>Nf1c zKKy_maR!%h4YzO~5Aic1GLSJCi*Xo_37C*cnVcz^hXq)KWf;oJtj@RCoSoT?z4$(d zawNxcJg0IN=W#jL@mp@=F7Dwz9_DeL=6PP`PrSi9yvGNOBGDyCLL|AQmb8*ta!EcZ zAcdre6q9oL-z~p8-QjIm5En_293@c}pSkxPU9Tj@x*ENB9N5;whd(7>Q9C#Mq3>_zYnpCSwYwVg_brHs)kr7GzNt zV@Z}}1y*4V*5(^*z&H6eTd+0TvID!YJA3m3e#npbDF<;FM{yh{a3Uvh8mDtM=W`Li z<_fOndT!(vZs%_9<$fOEK_1}=p5X;v;Z@$`UEb$IKH{%@%I6e`D1j0~VoGd@CkZ8q zq>wa{PSQ&jy}!acZvV6Ktdd*uOF=0tMWwiukkV3KD(Y4IpIs#_=hYAhKs=;CDTJaL zTA>X(pbPqAC`Mu&KF1U+#1bsWDy+o@Y{pjXz#bgH5gf-UoWn)@gd2E_->e742QV_D zF(wl;BeO6&b1@$au{cYy94oRaYqAdOu^}6?DO>U#wqr-W%N~4>ec7KMb07zEI7jny zPUe@K!8u&O#azmjT*Gg;iCejY-}6Tv69MPB1A{>;bxjgSC|BvB<;;z)c+BuOQu zWRPrn55Jlt^BQH1Xg!}d(0UI*48%k%BtQrfB9Zm}fmBF?bjW}PXoNes_Zsb3x1t0L zf$Wk;N=g|Cl}h@z(m+w|Cj=r{?@ftnJ(oQQ!HA92NQ?Byh=zC*cm0HbZqt7WL_mC` zL}^q&b+krXbi}(DfMFPg@%RE$u?Syd1y*AnHsV`+hn?7q?{O3-a2n@v30H9wPw)(6 z1V&+W1~UmWF)MR0H}kVFORzM{vl6SZ7VEM;8?gzSu@&2}Jv*^0d$JGvaR5KzXB@&2 z9K$a-gKng1SZ-MJD_0!ly$C;=s)1eAahPy$NePXak5uauIqQbFu@4{K8bNwr4H(%i7klxJb^Ob4x1x`*zrp*UAf3q?&1F64E etgH;|44gpbcUD$51`Y-;AoC{^BMXp{76Sn5qB}SM diff --git a/db/auth_copy_2.sqlite-wal b/db/auth_copy_2.sqlite-wal index 18c009b8d1dae713a9816fb59f44356ac966a272..5a966e384dd442ed2f4159c419f8ae95f00f0485 100644 GIT binary patch literal 2422592 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 z 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 delta 10 ScmX@`ZZhM9Lrfb476JesiUjxo diff --git a/src/main.rs b/src/main.rs index e9a4c70..5fa9674 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,6 +5,7 @@ use axum::extract::{ws::{Message, WebSocket, WebSocketUpgrade}, State}; use jsonwebtoken::{DecodingKey, EncodingKey}; use reqwest::header::AUTHORIZATION; use reqwest::header::CONTENT_TYPE; +use reqwest::header::USER_AGENT; use tokio::net::TcpListener; use tokio::sync::mpsc; @@ -100,7 +101,7 @@ async fn main() -> std::io::Result<()> { let cors = CorsLayer::very_permissive() .allow_credentials(true) .allow_methods([Method::GET, Method::POST, Method::PUT, Method::OPTIONS]) - .allow_headers([CONTENT_TYPE, AUTHORIZATION]); + .allow_headers([CONTENT_TYPE, AUTHORIZATION, USER_AGENT]); let app = create_router(state) .layer(Extension(jwt_keys)) .layer(cors); diff --git a/src/utils/auth.rs b/src/utils/auth.rs index a1473d4..34f62b4 100644 --- a/src/utils/auth.rs +++ b/src/utils/auth.rs @@ -406,7 +406,7 @@ pub async fn clean_auth_loging( }; if !verify_password(&payload.password, &stored_hash) { - return (StatusCode::UNAUTHORIZED, "Invelid credentials").into_response(); + return (StatusCode::UNAUTHORIZED, "Invalid credentials").into_response(); } @@ -472,10 +472,14 @@ pub async fn create_refresh_token( OsRng.fill_bytes(&mut bytes); let raw_token = Uuid::new_v4().to_string(); + + let hashed_token = &raw_token; + /* let hashed_token = argon2 .hash_password(raw_token.as_bytes(), &salt) .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))? .to_string(); + */ // let mut stmt = conn.prepare( // "SELECT id, password FROM users WHERE username = ?1" @@ -534,17 +538,19 @@ pub async fn create_refresh_token( /*.map_err(|_| (StatusCode::INTERNAL_SERVER_ERROR, "Error mapping hotel_ids".to_string())); */ //FIXME: might not need the hotel list on tconflict ? + + //TODO: remove user agent entirely from auth ,it is mutable and not stable + //TODO: make the token refresh on login conn.execute( r#" INSERT INTO refresh_token ( user_id, token_hash, device_id, - user_agent, hotel_id_list ) - VALUES (?1, ?2, ?3, ?4, ?5) - ON CONFLICT(user_id, device_id, user_agent) + VALUES (?1, ?2, ?3, ?4) + ON CONFLICT(user_id, device_id) DO UPDATE SET token_hash = excluded.token_hash, hotel_id_list = excluded.hotel_id_list @@ -553,7 +559,6 @@ pub async fn create_refresh_token( user_id, hashed_token, device_id_str, - user_agent_str, hotel_ids_json ], ).map_err(|e| { @@ -562,6 +567,10 @@ pub async fn create_refresh_token( //TODO: add a map/tupple of of the allowed hotels and their id+name, maybe update the token ? + println!("RAW write refresh_token bytes: {:?}", &raw_token.as_bytes()); + println!("RAW refresh_token : {}", &raw_token.to_string()); + println!("RAW write refresh_token len: {}", &raw_token.len()); + let cookie_value = format!("refresh_token={}; HttpOnly; Secure; Max-Age=60480000000;Path=/", raw_token); let mut response = (StatusCode::CREATED, "Refresh token created successfully").into_response(); @@ -602,6 +611,10 @@ pub async fn login_refresh_token ( None => return (StatusCode::UNAUTHORIZED, "Missing refresh token cookie").into_response(), }; + println!("RAW refresh_token bytes: {:?}", refresh_token.as_bytes()); + println!("RAW refresh_token : {}", refresh_token.to_string()); + println!("RAW refresh_token len: {}", refresh_token.len()); + println!("Cookies: {:?}", &refresh_token); let conn = match state.logs_pool.get() { @@ -624,22 +637,22 @@ pub async fn login_refresh_token ( //deserializing the list : //let hotel_ids: Vec = serde_json::from_str(&stored_value)?; let mut stmt = match conn.prepare( - "SELECT user_id, token_hash, hotel_id_list + "SELECT user_id, hotel_id_list FROM refresh_token - WHERE device_id = ?1 AND user_agent = ?2 + WHERE device_id = ?1 AND token_hash = ?2 LIMIT 1;" ) { Ok(s) => s, Err(_) => return (StatusCode::INTERNAL_SERVER_ERROR, "Error prepatring hotel_id_list stmt").into_response(), }; - let rows = match stmt.query_one(params![&device_id_str, &user_agent_str], |row| { + let rows = match stmt.query_one(params![&device_id_str, &refresh_token], |row| { Ok(( row.get::<_, i32>(0)?, // user_id row.get::<_, String>(1)?, // token_hash - row.get::<_, String>(2)?, // hotel_id //FIXME: this is supposed to be vectore maybe ? + //row.get::<_, String>(2)?, // hotel_id //FIXME: this is supposed to be vectore maybe ? )) - }) { + }).optional() { Ok(r) => r, Err(e) => { eprintln!("DB ERROR: {:?}", e); @@ -648,8 +661,16 @@ pub async fn login_refresh_token ( }; //TODO: extraction of the blob //let json_hotel_ids = rows.2; - let (user_id, saved_hash,json_hotel_ids) = rows; - + let (user_id, json_hotel_ids) = match rows { + Some(r) => r, + None => { + return ( + StatusCode::UNAUTHORIZED, + "No refresh token found for this device", + ) + .into_response(); + } +}; let hotel_ids: Vec = match serde_json::from_str(&json_hotel_ids) { Ok(ids) => ids, Err(_) => return (StatusCode::INTERNAL_SERVER_ERROR, "Hotel ids are not deserializable to Vec").into_response(), @@ -661,11 +682,18 @@ pub async fn login_refresh_token ( return (StatusCode::UNAUTHORIZED, "No matching device").into_response(); } - if !verify_password(&refresh_token, &saved_hash) { +/* + + eprintln!("DB ERROR: {:?}", &refresh_token); + eprintln!("DB ERROR: {:?}", &token); + + + //still not auto adding hotel user link when creating account + if (&refresh_token != &token) { // skip rows with wrong hash return (StatusCode::UNAUTHORIZED, "Invelid credentials").into_response(); } - + */ let expiration = match chrono::Utc::now().checked_add_signed(chrono::Duration::hours(15)) { Some(time) => time.timestamp() as usize, None => { @@ -705,12 +733,24 @@ pub async fn logout_from_single_device ( State(state): State, Extension(keys): Extension, user_agent: Option>, + cookie_header: Option>, Json(payload): Json ) -> impl IntoResponse { - let user_agent_str = user_agent - .map(|ua| ua.to_string()) - .unwrap_or_else(|| "Unknown".to_string()); + let user_agent_str = user_agent + .map(|TypedHeader(ua)| ua.as_str().to_owned()) + .unwrap_or_else(|| "Unknown".to_string()); + + let cookies = match cookie_header { + Some(token) => token, + None => return (StatusCode::UNAUTHORIZED, "Missing refresh token cookie").into_response(), + }; + + let refresh_token = match cookies.get("refresh_token") { + Some(token) => token.to_string(), + None => return (StatusCode::UNAUTHORIZED, "Missing refresh token cookie").into_response(), + }; + let device_id_str = payload.device_id.to_string(); @@ -719,25 +759,25 @@ pub async fn logout_from_single_device ( Err(_) => return (StatusCode::INTERNAL_SERVER_ERROR, "DB connection error").into_response(), }; + let device_row = match conn.query_row( - "SELECT user_id, token_hash, hotel_id_list, id FROM refresh_token WHERE device_id = ?1 AND user_agent = ?2 AND revoked = 0 ", - params![&device_id_str, &user_agent_str], + "SELECT user_id, hotel_id_list, id + FROM refresh_token + WHERE token_hash = ?1 AND revoked = 0 ", + params![&refresh_token], |row| { let user_id: i32 = row.get(0)?; - let token_hash: String = row.get(1)?; - let json_hotel_id_list: String = row.get(2)?; - let id:i32 = row.get(3)?; + let json_hotel_id_list: String = row.get(1)?; + let id:i32 = row.get(2)?; //let displayname: String = row.get(3)?; - Ok((user_id, token_hash, json_hotel_id_list ,id)) + Ok((user_id,json_hotel_id_list ,id)) }, ).optional() { Ok(opt) => opt, Err(e) => return (StatusCode::INTERNAL_SERVER_ERROR, format!("DB query error : {}", e )).into_response(), }; - - - let (user_id, token_hash, json_hotel_id_list, token_id) = match device_row { + let (user_id, json_hotel_id_list, token_id) = match device_row { Some(tuple) => tuple, None => return (StatusCode::UNAUTHORIZED, "No matching device").into_response(), }; @@ -755,18 +795,23 @@ pub async fn logout_from_single_device ( } */ -/* + let revoked: Result = conn.query_row( - "UPDATE refresh_token SET revoked = 1 WHERE id = ?1 RETURNING device_id", + "DELETE FROM refresh_token + WHERE id = ?1 + RETURNING device_id", params![&token_id], |row| row.get(0), ); -*/ + let revoked_id = match (revoked) { + Ok(r) => r, + Err(e) => return (StatusCode::INTERNAL_SERVER_ERROR, "Hotel ids are not deserializable to Vec").into_response() + }; let cookie_value = format!("refresh_token={}; HttpOnly; Secure; Max-Age=0;Path=/", "loggedout"); - let mut response = (StatusCode::CREATED, format!("Token deleted for device id {}", &device_id_str)) + let mut response = (StatusCode::CREATED, format!("Token deleted for device id {}", &revoked_id)) .into_response(); response.headers_mut().insert(