mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Use reauth helpers in google (#128580)
This commit is contained in:
parent
3ac05f1fa9
commit
a94968b6bb
@ -11,7 +11,12 @@ from gcal_sync.api import GoogleCalendarService
|
||||
from gcal_sync.exceptions import ApiException, ApiForbiddenException
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry, ConfigFlowResult, OptionsFlow
|
||||
from homeassistant.config_entries import (
|
||||
SOURCE_REAUTH,
|
||||
ConfigEntry,
|
||||
ConfigFlowResult,
|
||||
OptionsFlow,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import config_entry_oauth2_flow
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
@ -73,7 +78,6 @@ class OAuth2FlowHandler(
|
||||
def __init__(self) -> None:
|
||||
"""Set up instance."""
|
||||
super().__init__()
|
||||
self._reauth_config_entry: ConfigEntry | None = None
|
||||
self._device_flow: DeviceFlow | None = None
|
||||
# First attempt is device auth, then fallback to web auth
|
||||
self._web_auth = False
|
||||
@ -117,10 +121,10 @@ class OAuth2FlowHandler(
|
||||
)
|
||||
return self.async_abort(reason="oauth_error")
|
||||
calendar_access = DEFAULT_FEATURE_ACCESS
|
||||
if self._reauth_config_entry and self._reauth_config_entry.options:
|
||||
calendar_access = FeatureAccess[
|
||||
self._reauth_config_entry.options[CONF_CALENDAR_ACCESS]
|
||||
]
|
||||
if self.source == SOURCE_REAUTH and (
|
||||
reauth_options := self._get_reauth_entry().options
|
||||
):
|
||||
calendar_access = FeatureAccess[reauth_options[CONF_CALENDAR_ACCESS]]
|
||||
try:
|
||||
device_flow = await async_create_device_flow(
|
||||
self.hass,
|
||||
@ -177,14 +181,10 @@ class OAuth2FlowHandler(
|
||||
data[CONF_CREDENTIAL_TYPE] = (
|
||||
CredentialType.WEB_AUTH if self._web_auth else CredentialType.DEVICE_AUTH
|
||||
)
|
||||
if self._reauth_config_entry:
|
||||
self.hass.config_entries.async_update_entry(
|
||||
self._reauth_config_entry, data=data
|
||||
if self.source == SOURCE_REAUTH:
|
||||
return self.async_update_reload_and_abort(
|
||||
self._get_reauth_entry(), data=data
|
||||
)
|
||||
await self.hass.config_entries.async_reload(
|
||||
self._reauth_config_entry.entry_id
|
||||
)
|
||||
return self.async_abort(reason="reauth_successful")
|
||||
calendar_service = GoogleCalendarService(
|
||||
AccessTokenAuthImpl(
|
||||
async_get_clientsession(self.hass), data["token"]["access_token"]
|
||||
@ -221,9 +221,6 @@ class OAuth2FlowHandler(
|
||||
self, entry_data: Mapping[str, Any]
|
||||
) -> ConfigFlowResult:
|
||||
"""Perform reauth upon an API authentication error."""
|
||||
self._reauth_config_entry = self.hass.config_entries.async_get_entry(
|
||||
self.context["entry_id"]
|
||||
)
|
||||
self._web_auth = entry_data.get(CONF_CREDENTIAL_TYPE) == CredentialType.WEB_AUTH
|
||||
return await self.async_step_reauth_confirm()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user