Files
DP/Server/create_user.py
zuowei1216 1b19ff1b92 20251222
2025-12-22 21:06:29 +08:00

70 lines
2.2 KiB
Python

import sys
import os
# Add current directory to sys.path
sys.path.append(os.getcwd())
from app.db import SessionLocal
from app.services.auth_service import auth_service
from app.schemas.auth import UserRegister
from app.core.security import get_password_hash
from app.models.user import User
def create_user(username, password, email=None):
db = SessionLocal()
try:
# Check if user exists
existing = db.query(User).filter(User.username == username).first()
if existing:
print(f"❌ 用户名 '{username}' 已存在")
return
# Prepare registration data
# We bypass the code verification by not providing code,
# but we set email if provided.
# However, auth_service.register sets is_verified=False by default if code is missing.
# We might want to manually set is_verified=True after registration for convenience.
register_data = UserRegister(
username=username,
password=password,
confirm_password=password,
email=email,
device_id="local_script"
)
# Call register service
try:
token = auth_service.register(db, register_data)
print(f"✅ 用户 '{username}' 注册成功!")
# Manually verify the user for local convenience
user = db.query(User).filter(User.username == username).first()
if user:
user.is_verified = True
user.permissions = "admin" # Grant admin permissions for local test user
db.commit()
print(f"✅ 已自动验证邮箱并赋予 admin 权限")
except Exception as e:
print(f"❌ 注册失败: {e}")
finally:
db.close()
if __name__ == "__main__":
if len(sys.path) < 2:
print("Usage: python create_user.py [username] [password]")
username = "admin"
password = "password123"
email = "admin@example.com"
if len(sys.argv) > 1:
username = sys.argv[1]
if len(sys.argv) > 2:
password = sys.argv[2]
print(f"正在创建用户: {username} ...")
create_user(username, password, email)