nixos-modules/modules/home-assistant-create-perso...

58 lines
2.3 KiB
Diff

--- a/homeassistant/auth/providers/command_line.py 2024-02-04 01:41:34.460181490 +0100
+++ b/homeassistant/auth/providers/command_line.py 2024-02-04 01:46:55.952650748 +0100
@@ -118,6 +118,13 @@
username = flow_result["username"].strip().casefold()
users = await self.store.async_get_users()
+ hass = async_get_hass()
+ meta = self._user_meta.get(flow_result["username"], {})
+
+ pretty_name = meta.get("fullname")
+ if not pretty_name:
+ pretty_name = flow_result["username"]
+
for user in users:
if user.name and user.name.strip().casefold() != username:
continue
@@ -127,28 +134,34 @@
for credential in await self.async_credentials():
if credential.data["username"] and credential.data["username"].strip().casefold() == username:
+ coll: person.PersonStorageCollection = hass.data[person.DOMAIN][1]
+ found = False
+ for pers in coll.async_items():
+ if pers.get(person.ATTR_USER_ID) == user.id:
+ found = True
+ break
+
+ if "person" in hass.config.components and not found:
+ await person.async_create_person(hass, pretty_name, user_id=user.id)
+
return credential
cred = self.async_create_credentials({"username": username})
await self.store.async_link_user(user, cred)
return cred
- hass = async_get_hass()
- meta = self._user_meta.get(flow_result["username"], {})
-
provider = _async_get_hass_provider(hass)
await provider.async_initialize()
user = await hass.auth.async_create_user(flow_result["username"], group_ids=[meta.get("group")])
cred = await provider.async_get_or_create_credentials({"username": flow_result["username"]})
- pretty_name = meta.get("fullname")
- if not pretty_name:
- pretty_name = flow_result["username"]
await provider.data.async_save()
await hass.auth.async_link_user(user, cred)
+
if "person" in hass.config.components:
await person.async_create_person(hass, pretty_name, user_id=user.id)
+
# Create new credentials.
return cred