mirror of
https://github.com/home-assistant/core.git
synced 2025-11-08 02:19:31 +00:00
Add local auth provider (#14365)
* Add local auth provider * Lint * Docstring
This commit is contained in:
78
homeassistant/scripts/auth.py
Normal file
78
homeassistant/scripts/auth.py
Normal file
@@ -0,0 +1,78 @@
|
||||
"""Script to manage users for the Home Assistant auth provider."""
|
||||
import argparse
|
||||
import os
|
||||
|
||||
from homeassistant.config import get_default_config_dir
|
||||
from homeassistant.auth_providers import homeassistant as hass_auth
|
||||
|
||||
|
||||
def run(args):
|
||||
"""Handle Home Assistant auth provider script."""
|
||||
parser = argparse.ArgumentParser(
|
||||
description=("Manage Home Assistant users"))
|
||||
parser.add_argument(
|
||||
'--script', choices=['auth'])
|
||||
parser.add_argument(
|
||||
'-c', '--config',
|
||||
default=get_default_config_dir(),
|
||||
help="Directory that contains the Home Assistant configuration")
|
||||
|
||||
subparsers = parser.add_subparsers()
|
||||
parser_list = subparsers.add_parser('list')
|
||||
parser_list.set_defaults(func=list_users)
|
||||
|
||||
parser_add = subparsers.add_parser('add')
|
||||
parser_add.add_argument('username', type=str)
|
||||
parser_add.add_argument('password', type=str)
|
||||
parser_add.set_defaults(func=add_user)
|
||||
|
||||
parser_validate_login = subparsers.add_parser('validate')
|
||||
parser_validate_login.add_argument('username', type=str)
|
||||
parser_validate_login.add_argument('password', type=str)
|
||||
parser_validate_login.set_defaults(func=validate_login)
|
||||
|
||||
parser_change_pw = subparsers.add_parser('change_password')
|
||||
parser_change_pw.add_argument('username', type=str)
|
||||
parser_change_pw.add_argument('new_password', type=str)
|
||||
parser_change_pw.set_defaults(func=change_password)
|
||||
|
||||
args = parser.parse_args(args)
|
||||
path = os.path.join(os.getcwd(), args.config, hass_auth.PATH_DATA)
|
||||
args.func(hass_auth.load_data(path), args)
|
||||
|
||||
|
||||
def list_users(data, args):
|
||||
"""List the users."""
|
||||
count = 0
|
||||
for user in data.users:
|
||||
count += 1
|
||||
print(user['username'])
|
||||
|
||||
print()
|
||||
print("Total users:", count)
|
||||
|
||||
|
||||
def add_user(data, args):
|
||||
"""Create a user."""
|
||||
data.add_user(args.username, args.password)
|
||||
data.save()
|
||||
print("User created")
|
||||
|
||||
|
||||
def validate_login(data, args):
|
||||
"""Validate a login."""
|
||||
try:
|
||||
data.validate_login(args.username, args.password)
|
||||
print("Auth valid")
|
||||
except hass_auth.InvalidAuth:
|
||||
print("Auth invalid")
|
||||
|
||||
|
||||
def change_password(data, args):
|
||||
"""Change password."""
|
||||
try:
|
||||
data.change_password(args.username, args.new_password)
|
||||
data.save()
|
||||
print("Password changed")
|
||||
except hass_auth.InvalidUser:
|
||||
print("User not found")
|
||||
Reference in New Issue
Block a user