@@ -543,6 +543,53 @@ where
543
543
}
544
544
}
545
545
546
+ pub struct DashboardNoPermissionAuth ;
547
+
548
+ #[ cfg( feature = "olap" ) ]
549
+ #[ async_trait]
550
+ impl < A > AuthenticateAndFetch < UserFromToken , A > for DashboardNoPermissionAuth
551
+ where
552
+ A : AppStateInfo + Sync ,
553
+ {
554
+ async fn authenticate_and_fetch (
555
+ & self ,
556
+ request_headers : & HeaderMap ,
557
+ state : & A ,
558
+ ) -> RouterResult < ( UserFromToken , AuthenticationType ) > {
559
+ let payload = parse_jwt_payload :: < A , AuthToken > ( request_headers, state) . await ?;
560
+
561
+ Ok ( (
562
+ UserFromToken {
563
+ user_id : payload. user_id . clone ( ) ,
564
+ merchant_id : payload. merchant_id . clone ( ) ,
565
+ org_id : payload. org_id ,
566
+ role_id : payload. role_id ,
567
+ } ,
568
+ AuthenticationType :: MerchantJWT {
569
+ merchant_id : payload. merchant_id ,
570
+ user_id : Some ( payload. user_id ) ,
571
+ } ,
572
+ ) )
573
+ }
574
+ }
575
+
576
+ #[ cfg( feature = "olap" ) ]
577
+ #[ async_trait]
578
+ impl < A > AuthenticateAndFetch < ( ) , A > for DashboardNoPermissionAuth
579
+ where
580
+ A : AppStateInfo + Sync ,
581
+ {
582
+ async fn authenticate_and_fetch (
583
+ & self ,
584
+ request_headers : & HeaderMap ,
585
+ state : & A ,
586
+ ) -> RouterResult < ( ( ) , AuthenticationType ) > {
587
+ parse_jwt_payload :: < A , AuthToken > ( request_headers, state) . await ?;
588
+
589
+ Ok ( ( ( ) , AuthenticationType :: NoAuth ) )
590
+ }
591
+ }
592
+
546
593
pub trait ClientSecretFetch {
547
594
fn get_client_secret ( & self ) -> Option < & String > ;
548
595
}
0 commit comments