@@ -788,7 +788,7 @@ def __call__(self, user=None, password=None, api_key=None, context=None):
788788 if user is not None :
789789 (uid , password , session ) = self ._check_user_password (user , password , api_key )
790790 if context is None :
791- context = session [ 'user_context' ]
791+ context = session . get ( 'user_context' ) or {}
792792 elif context is not None :
793793 (uid , user , session ) = (self .uid , self .user , self .session_info )
794794 else :
@@ -1404,7 +1404,7 @@ def _authenticate_web(self, **kw):
14041404 # 5. Submit TOTP
14051405 params = {'csrf_token' : csrf , 'totp_token' : token , 'remember' : 1 }
14061406 rv , session_info = self ._request_parse ('/web/login/totp' , data = params )
1407- return session_info
1407+ return session_info if session_info . get ( 'username' ) == kw [ 'login' ] else { 'uid' : None }
14081408
14091409 def _authenticate_system (self ):
14101410 __ , session_info = self ._request_parse ('/web/become' )
@@ -1466,12 +1466,12 @@ def login(self, user, password=None, database=None, api_key=None):
14661466 if not self ._is_interactive ():
14671467 return self ._login (user , password = password , database = database , api_key = api_key )
14681468 try :
1469- self ._login (user , password = password , database = database , api_key = api_key )
1469+ register = self ._login (user , password = password , database = database , api_key = api_key )
14701470 except Error as exc :
14711471 print (exc )
1472- else :
1473- # Register the new globals()
1474- self .connect ()
1472+ register = 'client' not in self . _globals
1473+ # Register the globals()
1474+ register and self .connect ()
14751475
14761476 def connect (self , env_name = None , * , server = None , user = None ):
14771477 """Connect to another environment and replace the globals()."""
@@ -2512,8 +2512,6 @@ def main(interact=_interact):
25122512 writer .writerows (data or ())
25132513
25142514 if client ._is_interactive ():
2515- if not client .env .uid :
2516- client .connect ()
25172515 return interact (global_vars ) if interact else global_vars
25182516
25192517
0 commit comments