fix: 修正 create_admin.py 调用注释为 py -3.12
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
"""
|
||||
创建管理员账号 — 交互式命令行脚本
|
||||
|
||||
用法:
|
||||
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()
|
||||
Reference in New Issue
Block a user