From 8cf595dd3e2cfd3fd16964590a92bee7b9fa2862 Mon Sep 17 00:00:00 2001 From: Florian Ludwig Date: Wed, 9 Jan 2019 05:45:24 +0100 Subject: [PATCH] assign user to websocket connection when using legacy_api_password (#19797) --- homeassistant/components/websocket_api/auth.py | 4 +++- tests/components/websocket_api/test_auth.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/websocket_api/auth.py b/homeassistant/components/websocket_api/auth.py index 434775c9b9b..f175327bf28 100644 --- a/homeassistant/components/websocket_api/auth.py +++ b/homeassistant/components/websocket_api/auth.py @@ -6,6 +6,7 @@ from homeassistant.const import __version__ from homeassistant.components.http.auth import validate_password from homeassistant.components.http.ban import process_wrong_login, \ process_success_login +from homeassistant.auth.providers import legacy_api_password from .connection import ActiveConnection from .error import Disconnect @@ -81,7 +82,8 @@ class AuthPhase: elif self._hass.auth.support_legacy and 'api_password' in msg: self._logger.debug("Received api_password") if validate_password(self._request, msg['api_password']): - return await self._async_finish_auth(None, None) + user = await legacy_api_password.async_get_user(self._hass) + return await self._async_finish_auth(user, None) self._send_message(auth_invalid_message( 'Invalid access token or password')) diff --git a/tests/components/websocket_api/test_auth.py b/tests/components/websocket_api/test_auth.py index 4c0014e4783..9d2d2ce251e 100644 --- a/tests/components/websocket_api/test_auth.py +++ b/tests/components/websocket_api/test_auth.py @@ -132,7 +132,8 @@ async def test_auth_active_with_password_not_allow(hass, aiohttp_client): assert auth_msg['type'] == TYPE_AUTH_INVALID -async def test_auth_legacy_support_with_password(hass, aiohttp_client): +async def test_auth_legacy_support_with_password(hass, aiohttp_client, + legacy_auth): """Test authenticating with a token.""" assert await async_setup_component(hass, 'websocket_api', { 'http': {