1- use crate :: controllers:: util:: RequestPartsExt ;
21use axum:: extract:: { Extension , FromRequestParts , Request } ;
32use axum:: middleware:: Next ;
43use axum:: response:: { IntoResponse , Response } ;
54use axum_extra:: extract:: SignedCookieJar ;
65use base64:: { engine:: general_purpose, Engine } ;
76use cookie:: time:: Duration ;
87use cookie:: { Cookie , SameSite } ;
9- use derive_more:: Deref ;
108use parking_lot:: RwLock ;
119use std:: collections:: HashMap ;
1210use std:: sync:: Arc ;
1311
1412static COOKIE_NAME : & str = "cargo_session" ;
1513static MAX_AGE_DAYS : i64 = 90 ;
1614
17- #[ derive( Clone , FromRequestParts , Deref ) ]
15+ #[ derive( Clone , FromRequestParts ) ]
1816#[ from_request( via( Extension ) ) ]
1917pub struct SessionExtension ( Arc < RwLock < Session > > ) ;
2018
@@ -24,18 +22,18 @@ impl SessionExtension {
2422 }
2523
2624 pub fn get ( & self , key : & str ) -> Option < String > {
27- let session = self . read ( ) ;
25+ let session = self . 0 . read ( ) ;
2826 session. data . get ( key) . cloned ( )
2927 }
3028
3129 pub fn insert ( & self , key : String , value : String ) -> Option < String > {
32- let mut session = self . write ( ) ;
30+ let mut session = self . 0 . write ( ) ;
3331 session. dirty = true ;
3432 session. data . insert ( key, value)
3533 }
3634
3735 pub fn remove ( & self , key : & str ) -> Option < String > {
38- let mut session = self . write ( ) ;
36+ let mut session = self . 0 . write ( ) ;
3937 session. dirty = true ;
4038 session. data . remove ( key)
4139 }
@@ -54,7 +52,7 @@ pub async fn attach_session(jar: SignedCookieJar, mut req: Request, next: Next)
5452 let response = next. run ( req) . await ;
5553
5654 // Check if the session data was mutated
57- let session = session. read ( ) ;
55+ let session = session. 0 . read ( ) ;
5856 if session. dirty {
5957 // Return response with additional `Set-Cookie` header
6058 let encoded = encode ( & session. data ) ;
@@ -83,18 +81,6 @@ impl Session {
8381 }
8482}
8583
86- pub trait RequestSession {
87- fn session ( & self ) -> & SessionExtension ;
88- }
89-
90- impl < T : RequestPartsExt > RequestSession for T {
91- fn session ( & self ) -> & SessionExtension {
92- self . extensions ( )
93- . get :: < SessionExtension > ( )
94- . expect ( "missing cookie session" )
95- }
96- }
97-
9884pub fn decode ( cookie : Cookie < ' _ > ) -> HashMap < String , String > {
9985 let mut ret = HashMap :: new ( ) ;
10086 let bytes = general_purpose:: STANDARD
0 commit comments