22
33from guillotina import app_settings , task_vars
44from guillotina .auth import find_user
5- from guillotina .contrib .oauth .flow . resources import oauth_required_audience
5+ from guillotina .contrib .oauth .auth . context import OAuthTokenContext
66from guillotina .contrib .oauth .flow .scopes import OAUTH_DEFAULT_SCOPE
7+ from guillotina .contrib .oauth .indicators .access import required_resource_indicator
78from guillotina .contrib .oauth .utils .crypto import access_token_signing_key
89from guillotina .contrib .oauth .utils .urls import container_issuer_url
910
@@ -35,7 +36,7 @@ async def validate(self, token):
3536 if claims .get ("iss" ) != issuer :
3637 return
3738 aud = set (claims .get ("aud" ) or [])
38- if oauth_required_audience (request , container ) not in aud :
39+ if required_resource_indicator (request , container ) not in aud :
3940 return
4041 if not claims .get ("client_id" ):
4142 return
@@ -45,12 +46,11 @@ async def validate(self, token):
4546 token ["id" ] = claims .get ("id" , claims .get ("sub" ))
4647 token ["decoded" ] = claims
4748 user = await find_user (token )
48- if user is not None and user .id == token ["id" ]:
49- if request is not None :
50- request .oauth = {
51- "client_id" : claims .get ("client_id" ),
52- "scopes" : scopes ,
53- "resources" : set (claims .get ("aud" ) or []),
54- "claims" : claims ,
55- }
56- return user
49+ if user is not None and user .id == token ["id" ] and request is not None :
50+ request .oauth = OAuthTokenContext (
51+ client_id = claims .get ("client_id" ),
52+ scopes = frozenset (scopes ),
53+ resource_indicators = frozenset (claims .get ("aud" ) or []),
54+ claims = claims ,
55+ )
56+ return user
0 commit comments