1313
1414
1515class JWTToken (Token ):
16+ init_args = {
17+ 'add_claims_by_scope' : False ,
18+ 'enable_claims_per_client' : False ,
19+ "add_claims" : {}
20+ }
21+
1622 def __init__ (
1723 self ,
1824 typ ,
@@ -28,7 +34,7 @@ def __init__(
2834 Token .__init__ (self , typ , ** kwargs )
2935 self .token_type = token_type
3036 self .lifetime = lifetime
31- self .args = kwargs
37+ self .args = {( k , v ) for k , v in kwargs . items () if k not in self . init_args . keys ()}
3238
3339 self .key_jar = keyjar or ec .keyjar
3440 self .issuer = issuer or ec .issuer
@@ -37,11 +43,15 @@ def __init__(
3743 self .def_aud = aud or []
3844 self .alg = alg
3945 self .scope_claims_map = kwargs .get ("scope_claims_map" , ec .scope2claims )
40- self .enable_claims_per_client = kwargs .get (
41- "enable_claims_per_client" , False
42- )
4346
44- def add_claims (self , payload , uinfo , claims ):
47+ self .add_claims = self .init_args ['add_claims' ]
48+ self .add_claims_by_scope = self .init_args ['add_claims_by_scope' ]
49+ self .enable_claims_per_client = self .init_args ["enable_claims_per_client" ]
50+
51+ for param , default in self .init_args .items ():
52+ setattr (self , param , kwargs .get (param , default ))
53+
54+ def do_add_claims (self , payload , uinfo , claims ):
4555 for attr in claims :
4656 if attr == "sub" :
4757 continue
@@ -65,10 +75,10 @@ def __call__(
6575 """
6676 payload = {"sid" : sid , "ttype" : self .type , "sub" : sinfo ["sub" ]}
6777
68- if "add_claims" in self .args :
69- self .add_claims (payload , uinfo , self .args [ " add_claims" ] )
70- if self .args . get ( " add_claims_by_scope" , False ) :
71- self .add_claims (
78+ if self .add_claims :
79+ self .do_add_claims (payload , uinfo , self .add_claims )
80+ if self .add_claims_by_scope :
81+ self .do_add_claims (
7282 payload ,
7383 uinfo ,
7484 scope2claims (
@@ -80,7 +90,7 @@ def __call__(
8090 client = self .cdb .get (client_id , {})
8191 client_claims = client .get ("access_token_claims" )
8292 if client_claims :
83- self .add_claims (payload , uinfo , client_claims )
93+ self .do_add_claims (payload , uinfo , client_claims )
8494
8595 payload .update (kwargs )
8696 signer = JWT (
0 commit comments