Files

81 lines
2.2 KiB
Python

"""
创建管理员账号 — 交互式命令行脚本
用法:
cd backend
py -3.12 scripts/create_admin.py
"""
import sys
from pathlib import Path
# 确保 backend/ 目录在 sys.path 中,使 app.* 导入正常工作
backend_dir = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(backend_dir))
from getpass import getpass
from sqlmodel import Session, select
from app.core.security import hash_password
from app.db.session import engine
from app.models.user import User, UserRole
def main():
print("=" * 50)
print(" 军事科技工作台 — 创建管理员账号")
print("=" * 50)
print()
username = input("请输入用户名: ").strip()
if not username:
print("❌ 用户名不能为空")
sys.exit(1)
display_name = input("请输入显示名(中文姓名): ").strip()
if not display_name:
print("❌ 显示名不能为空")
sys.exit(1)
password = getpass("请输入密码(输入不显示): ").strip()
if not password:
print("❌ 密码不能为空")
sys.exit(1)
password_confirm = getpass("请再次输入密码确认: ").strip()
if password != password_confirm:
print("❌ 两次输入的密码不一致")
sys.exit(1)
with Session(engine) as session:
# 检查用户名是否已存在
existing = session.exec(
select(User).where(User.username == username)
).first()
if existing:
print(f"❌ 用户名「{username}」已存在,请换一个用户名")
sys.exit(1)
user = User(
username=username,
display_name=display_name,
password_hash=hash_password(password),
role=UserRole.zhipianren,
is_active=True,
)
session.add(user)
session.commit()
session.refresh(user)
print()
print("✅ 管理员账号创建成功!")
print(f" 用户名: {user.username}")
print(f" 显示名: {user.display_name}")
print(f" 角色: {user.role.value}(制片人/管理员)")
print(f" ID: {user.id}")
print()
if __name__ == "__main__":
main()