From ff41cf1507215f9da4a76dbcc0c99fada1b85ba3 Mon Sep 17 00:00:00 2001 From: BreakingBread0 <49913490+BreakingBread0@users.noreply.github.com> Date: Tue, 20 Jul 2021 17:08:26 +0000 Subject: [PATCH] Adds MFA Capability to Tesla Integration --- homeassistant/components/tesla/config_flow.py | 6 +++++- homeassistant/components/tesla/const.py | 1 + homeassistant/components/tesla/strings.json | 3 ++- homeassistant/components/tesla/translations/en.json | 3 ++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/tesla/config_flow.py b/homeassistant/components/tesla/config_flow.py index af2fd7ae769..46bc49b126b 100644 --- a/homeassistant/components/tesla/config_flow.py +++ b/homeassistant/components/tesla/config_flow.py @@ -21,6 +21,7 @@ from homeassistant.helpers.httpx_client import SERVER_SOFTWARE, USER_AGENT from .const import ( CONF_EXPIRATION, + CONF_MFA, CONF_WAKE_ON_START, DEFAULT_SCAN_INTERVAL, DEFAULT_WAKE_ON_START, @@ -99,6 +100,7 @@ class TeslaConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): { vol.Required(CONF_USERNAME, default=self.username): str, vol.Required(CONF_PASSWORD): str, + vol.Optional(CONF_MFA): str, } ) @@ -158,7 +160,9 @@ async def validate_input(hass: core.HomeAssistant, data): password=data[CONF_PASSWORD], update_interval=DEFAULT_SCAN_INTERVAL, ) - result = await controller.connect(test_login=True) + result = await controller.connect( + test_login=True, mfa_code=(data[CONF_MFA] if CONF_MFA in data else "") + ) config[CONF_TOKEN] = result["refresh_token"] config[CONF_ACCESS_TOKEN] = result["access_token"] config[CONF_EXPIRATION] = result[CONF_EXPIRATION] diff --git a/homeassistant/components/tesla/const.py b/homeassistant/components/tesla/const.py index 4155942c0ad..c288b3c1cda 100644 --- a/homeassistant/components/tesla/const.py +++ b/homeassistant/components/tesla/const.py @@ -1,6 +1,7 @@ """Const file for Tesla cars.""" CONF_EXPIRATION = "expiration" CONF_WAKE_ON_START = "enable_wake_on_start" +CONF_MFA = "mfa" DOMAIN = "tesla" DATA_LISTENER = "listener" DEFAULT_SCAN_INTERVAL = 660 diff --git a/homeassistant/components/tesla/strings.json b/homeassistant/components/tesla/strings.json index c75562528de..1bfc89e361b 100644 --- a/homeassistant/components/tesla/strings.json +++ b/homeassistant/components/tesla/strings.json @@ -13,7 +13,8 @@ "user": { "data": { "username": "[%key:common::config_flow::data::email%]", - "password": "[%key:common::config_flow::data::password%]" + "password": "[%key:common::config_flow::data::password%]", + "mfa": "MFA Code" }, "description": "Please enter your information.", "title": "Tesla - Configuration" diff --git a/homeassistant/components/tesla/translations/en.json b/homeassistant/components/tesla/translations/en.json index 53b213ac19b..dc7ab1ac66d 100644 --- a/homeassistant/components/tesla/translations/en.json +++ b/homeassistant/components/tesla/translations/en.json @@ -13,7 +13,8 @@ "user": { "data": { "password": "Password", - "username": "Email" + "username": "Email", + "mfa": "MFA Code" }, "description": "Please enter your information.", "title": "Tesla - Configuration"