diff --git a/mergin/client.py b/mergin/client.py index e9d0b21e..b0fe05a7 100644 --- a/mergin/client.py +++ b/mergin/client.py @@ -199,12 +199,14 @@ def user_agent_info(self): def validate_auth(self): """Validate that client has valid auth token or can be logged in.""" - if self._auth_session: # Refresh auth token if it expired or will expire very soon - delta = self._auth_session["expire"] - datetime.now(timezone.utc) - if delta.total_seconds() < 5: - self.log.info("Token has expired - refreshing...") + expire = self._auth_session.get("expire") + now = datetime.now(timezone.utc) + delta = expire - now + delta_seconds = delta.total_seconds() + if delta_seconds < 5: + self.log.debug(f"Token has expired: expire={expire} now={now} delta={delta_seconds:.1f}s") if self._auth_params.get("login", None) and self._auth_params.get("password", None): self.log.info("Token has expired - refreshing...") self.login(self._auth_params["login"], self._auth_params["password"]) @@ -303,7 +305,6 @@ def login(self, login, password): :type password: String """ params = {"login": login, "password": password} - self._auth_session = None self.log.info(f"Going to log in user {login}") try: resp = self.post( @@ -314,12 +315,14 @@ def login(self, login, password): except ClientError as e: self.log.info(f"Login problem: {e.detail}") raise LoginError(e.detail) + expires = dateutil.parser.parse(session["expire"]) self._auth_session = { "token": f"Bearer {session['token']}", - "expire": dateutil.parser.parse(session["expire"]), + "expire": expires, } self._user_info = {"username": data["username"]} self.log.info(f"User {data['username']} successfully logged in.") + self.log.debug(f"The auth token expires at {expires}") return session def username(self): diff --git a/mergin/merginproject.py b/mergin/merginproject.py index a82f5796..90136516 100644 --- a/mergin/merginproject.py +++ b/mergin/merginproject.py @@ -427,7 +427,7 @@ def get_push_changes(self): file["checksum"] = checksum file["chunks"] = [str(uuid.uuid4()) for i in range(math.ceil(file["size"] / UPLOAD_CHUNK_SIZE))] - # need to check for for real changes in geodiff files using geodiff tool (comparing checksum is not enough) + # need to check for real changes in geodiff files using geodiff tool (comparing checksum is not enough) not_updated = [] for file in changes["updated"]: path = file["path"]