create_api_key.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/env python3
  2. """
  3. Usage: python create_api_key.py <email> <name>
  4. Creates an API key for the given user and stores it in api_keys.json.
  5. """
  6. import json
  7. import os
  8. import secrets
  9. import sys
  10. from datetime import datetime
  11. KEYS_FILE = os.path.join(os.path.dirname(__file__), "api_keys.json")
  12. def create_key(email: str, name: str) -> str:
  13. keys: dict = {}
  14. if os.path.exists(KEYS_FILE):
  15. with open(KEYS_FILE) as f:
  16. keys = json.load(f)
  17. # Check for duplicate email
  18. for k, v in keys.items():
  19. if v["email"] == email:
  20. print(f"[!] A key already exists for {email}: {k}")
  21. print(" Delete it from api_keys.json first if you want a new one.")
  22. sys.exit(1)
  23. key = "tk_" + secrets.token_hex(24)
  24. keys[key] = {
  25. "email": email,
  26. "name": name,
  27. "created_at": datetime.now().isoformat(),
  28. }
  29. with open(KEYS_FILE, "w") as f:
  30. json.dump(keys, f, indent=2)
  31. print(f"\n✓ API key created for {name} <{email}>")
  32. print(f"\n Key: {key}\n")
  33. print(" Share the key with the user — it cannot be recovered later.")
  34. return key
  35. if __name__ == "__main__":
  36. if len(sys.argv) != 3:
  37. print("Usage: python create_api_key.py <email> <name>")
  38. sys.exit(1)
  39. create_key(sys.argv[1], sys.argv[2])