11import typing as t
22
3+ import pulp_glue .common .pydantic_oas as s
4+
35
46class AuthProviderBase :
57 """
@@ -18,26 +20,32 @@ def can_complete_mutualTLS(self) -> bool:
1820 def can_complete_oauth2_client_credentials (self , scopes : list [str ]) -> bool :
1921 return False
2022
21- def can_complete_scheme (self , scheme : dict [ str , t . Any ] , scopes : list [str ]) -> bool :
22- if scheme [ "type" ] == "http" :
23- if scheme [ "scheme" ] == "basic" :
23+ def can_complete_scheme (self , security_scheme : s . SecurityScheme , scopes : list [str ]) -> bool :
24+ if isinstance ( security_scheme , s . SecuritySchemeHttp ) :
25+ if security_scheme . scheme == "basic" :
2426 return self .can_complete_http_basic ()
25- elif scheme [ "type" ] == "mutualTLS" :
27+ elif isinstance ( security_scheme , s . SecuritySchemeMutualTLS ) :
2628 return self .can_complete_mutualTLS ()
27- elif scheme [ "type" ] == "oauth2" :
28- for flow_name , flow in scheme [ " flows" ]. items ():
29- if flow_name == "clientCredentials" and self .can_complete_oauth2_client_credentials (
30- flow [ " scopes" ]
31- ):
32- return True
29+ elif isinstance ( security_scheme , s . SecuritySchemeOAuth2 ) :
30+ client_credentials_flow = security_scheme . flows . client_credentials
31+ if client_credentials_flow is not None and self .can_complete_oauth2_client_credentials (
32+ list ( client_credentials_flow . scopes . keys ())
33+ ):
34+ return True
3335 return False
3436
3537 def can_complete (
36- self , proposal : dict [str , list [str ]], security_schemes : dict [str , dict [str , t .Any ]]
38+ self ,
39+ proposal : dict [str , list [str ]],
40+ security_schemes : dict [str , s .SecurityScheme | s .Reference ],
3741 ) -> bool :
3842 for name , scopes in proposal .items ():
39- scheme = security_schemes .get (name )
40- if scheme is None or not self .can_complete_scheme (scheme , scopes ):
43+ security_scheme = security_schemes .get (name )
44+ if (
45+ security_scheme is None
46+ or isinstance (security_scheme , s .Reference )
47+ or not self .can_complete_scheme (security_scheme , scopes )
48+ ):
4149 return False
4250 # This covers the case where `[]` allows for no auth at all.
4351 return True
0 commit comments