diff --git a/recnetlogin/base_client.py b/recnetlogin/base_client.py index ff97d9b..6f5c763 100644 --- a/recnetlogin/base_client.py +++ b/recnetlogin/base_client.py @@ -7,6 +7,7 @@ def __init__( username: str, password: str, prompt_2fa: bool = False, + given_2fa: str = "", session: aiohttp.ClientSession or httpx.Client = None, **kwargs ) -> None: @@ -19,4 +20,6 @@ def __init__( # Decoded bearer token self.decoded = {} # Whether or not to prompt for 2fa code - self.prompt_2fa = prompt_2fa \ No newline at end of file + self.prompt_2fa = prompt_2fa + # 2FA token + self.given_2fa = given_2fa \ No newline at end of file diff --git a/recnetlogin/sync_client.py b/recnetlogin/sync_client.py index 4e8fde9..f7f85ab 100644 --- a/recnetlogin/sync_client.py +++ b/recnetlogin/sync_client.py @@ -33,7 +33,10 @@ def __login(self) -> None: return def __login_2fa(self) -> None: - twofa_code = prompt_2fa() + if self.given_2fa: + twofa_code = self.given_2fa + else: + twofa_code = prompt_2fa() resp = self.__session.get(ApiInfo.TWOFA_URL) html = resp.content @@ -48,6 +51,7 @@ def __login_2fa(self) -> None: self.decoded = decode_token(self.bearer_token) except TwoFactorAuthenticatorEnabled: print(debug_text("Authenticator code is wrong!")) + raise TwoFactorAuthenticaorCodeWrong return self.__login_2fa() def close(self):