@@ -18,6 +18,7 @@ class User(Property):
1818 # must be awaitable ----
1919 def get_user_id (self , request : Request ) -> Union [str , int , Any ]:
2020 data : Mapping = self .authentication .getter (request ) or {}
21+ var .user_config .setter (request , self )
2122 if isinstance (data , Mapping ):
2223 user_id = data .get (self .key )
2324 else :
@@ -28,6 +29,7 @@ def get_user_id(self, request: Request) -> Union[str, int, Any]:
2829 @awaitable (get_user_id )
2930 async def get_user_id (self , request : Request ) -> Union [str , int , Any ]:
3031 r = self .authentication .getter (request )
32+ var .user_config .setter (request , self )
3133 if inspect .isawaitable (r ):
3234 r = await r
3335 data : Mapping = r or {}
@@ -69,6 +71,7 @@ async def get_user(self, request: Request):
6971
7072 def getter (self , request : Request , field : ParserField = None ):
7173 user_var = self .context_var .setup (request )
74+ var .user_config .setter (request , self )
7275 # even if we registered factory
7376 # we still need to cache here
7477 # because parse_context will directly call getter
@@ -87,6 +90,7 @@ def getter(self, request: Request, field: ParserField = None):
8790 @awaitable (getter )
8891 async def getter (self , request : Request , field : ParserField = None ):
8992 user_var = self .context_var .setup (request )
93+ var .user_config .setter (request , self )
9094 if user_var .contains ():
9195 # already cached
9296 # use await in async context
@@ -130,6 +134,7 @@ def __init__(
130134 login_time_field = None ,
131135 login_ip_field = None ,
132136 password_field = None ,
137+ last_activity_field = None ,
133138 default = unprovided ,
134139 required : bool = None ,
135140 # context var
@@ -157,6 +162,7 @@ def __init__(
157162 self .login_time_field = login_time_field
158163 self .login_ip_field = login_ip_field
159164 self .password_field = password_field
165+ self .last_activity_field = last_activity_field
160166 self .scopes_field = scopes_field
161167
162168 self .field = field
@@ -187,6 +193,7 @@ def prepare_fields(self):
187193 self .login_time_field = self .validate_field (self .login_time_field )
188194 self .login_ip_field = self .validate_field (self .login_ip_field )
189195 self .password_field = self .validate_field (self .password_field )
196+ self .last_activity_field = self .validate_field (self .last_activity_field )
190197 self .scopes_field = self .validate_field (self .scopes_field )
191198
192199 def validate_field (self , f ):
@@ -314,6 +321,8 @@ def get_update_data(self, request: Request, data=None):
314321 data = data or {}
315322 if self .login_time_field :
316323 data .update ({self .login_time_field : request .time })
324+ if self .last_activity_field :
325+ data .update ({self .last_activity_field : request .time })
317326 if self .login_ip_field :
318327 data .update ({self .login_ip_field : str (request .ip_address )})
319328 if not data :
0 commit comments