43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
"""Create a user with API token. Usage:
|
|
python -m scripts.create_user testuser --display-name "Test User"
|
|
python -m scripts.create_user guest --token my-custom-token-32chars-min
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
from app.db.base import SessionLocal, init_db
|
|
from app.auth.service import create_user
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser(description="Create Home Assistant user")
|
|
parser.add_argument("username", help="Unique username (lowercase)")
|
|
parser.add_argument("--display-name", default="", help="Display name")
|
|
parser.add_argument("--token", default="", help="Custom API token (auto-generated if empty)")
|
|
args = parser.parse_args()
|
|
|
|
init_db()
|
|
db = SessionLocal()
|
|
try:
|
|
user, plain_token = create_user(
|
|
db,
|
|
username=args.username,
|
|
display_name=args.display_name or args.username,
|
|
api_token=args.token or None,
|
|
)
|
|
except ValueError as exc:
|
|
print(f"Error: {exc}", file=sys.stderr)
|
|
return 1
|
|
finally:
|
|
db.close()
|
|
|
|
print(f"Created user id={user.id} username={user.username}")
|
|
print(f"API token (save it, shown once):\n{plain_token}")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|