| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/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 <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()
|