#!/usr/bin/env python3 """管理用户 API Key。 用法: python manage_users.py add --email user@example.com --name "User Name" python manage_users.py list python manage_users.py delete --api-key """ import argparse import secrets import time import boto3 TABLE_NAME = 'sp-transcribe-users' def add_user(email: str, name: str): ddb = boto3.resource('dynamodb') table = ddb.Table(TABLE_NAME) api_key = secrets.token_urlsafe(32) table.put_item(Item={ 'api_key': api_key, 'email': email, 'name': name, 'created_at': int(time.time()), }) print(f"用户已创建:") print(f" Name: {name}") print(f" Email: {email}") print(f" API Key: {api_key}") def list_users(): ddb = boto3.resource('dynamodb') table = ddb.Table(TABLE_NAME) resp = table.scan() items = resp.get('Items', []) if not items: print("无用户") return for u in items: print(f" {u.get('name', '?'):20s} {u.get('email', '?'):30s} {u['api_key']}") def delete_user(api_key: str): ddb = boto3.resource('dynamodb') table = ddb.Table(TABLE_NAME) table.delete_item(Key={'api_key': api_key}) print(f"已删除: {api_key}") def main(): parser = argparse.ArgumentParser(description="管理 SP Transcribe 用户") sub = parser.add_subparsers(dest='cmd') p_add = sub.add_parser('add') p_add.add_argument('--email', required=True) p_add.add_argument('--name', required=True) sub.add_parser('list') p_del = sub.add_parser('delete') p_del.add_argument('--api-key', required=True) args = parser.parse_args() if args.cmd == 'add': add_user(args.email, args.name) elif args.cmd == 'list': list_users() elif args.cmd == 'delete': delete_user(args.api_key) else: parser.print_help() if __name__ == '__main__': main()