@@ -3,7 +3,9 @@ use base64::{Engine, prelude::BASE64_STANDARD};
33use jwt_simple:: prelude:: { RS256PublicKey , RSAPublicKeyLike } ;
44#[ cfg( feature = "mock" ) ]
55use mockall:: automock;
6+ use reqwest:: Client ;
67use serde:: { Deserialize , Serialize } ;
8+ use trait_variant:: make;
79
810#[ derive( Debug , Deserialize , Serialize , Clone ) ]
911pub struct TokenClaims {
@@ -25,9 +27,9 @@ macro_rules! keycloak_url {
2527 } } ;
2628}
2729
30+ #[ make( Send + Sync ) ]
2831#[ cfg_attr( feature = "mock" , automock) ]
29- #[ allow( async_fn_in_trait) ]
30- pub trait SingleSignOnProvider : Send + Sync {
32+ pub trait SingleSignOnProvider {
3133 async fn verify_token ( & self , token : & str ) -> anyhow:: Result < TokenClaims > ;
3234}
3335
@@ -39,12 +41,17 @@ pub struct KeycloakProvider {
3941impl Default for KeycloakProvider {
4042 fn default ( ) -> Self {
4143 Self {
42- client : reqwest :: Client :: new ( ) ,
44+ client : Client :: new ( ) ,
4345 }
4446 }
4547}
4648
4749impl KeycloakProvider {
50+ pub fn config ( ) -> String {
51+ let keycloak_url = & keycloak_url ! ( ) ;
52+ format ! ( "window.__APP_CONFIG__ = {{KEYCLOAK_URL:\" {keycloak_url}\" }};" )
53+ }
54+
4855 async fn realm_public_key ( & self ) -> Result < RS256PublicKey > {
4956 let resp = self
5057 . client
@@ -71,8 +78,3 @@ impl SingleSignOnProvider for KeycloakProvider {
7178 Ok ( claims. custom )
7279 }
7380}
74-
75- pub fn config ( ) -> String {
76- let keycloak_url = & keycloak_url ! ( ) ;
77- format ! ( "window.__APP_CONFIG__ = {{KEYCLOAK_URL:\" {keycloak_url}\" }};" )
78- }
0 commit comments