Initial commit: MyBlog full stack blog
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""
|
||||
博主账号初始化脚本。
|
||||
|
||||
用法:
|
||||
1. 在 .env 中配置 BLOGGER_USERNAME / BLOGGER_EMAIL / BLOGGER_PASSWORD
|
||||
2. 运行:python -m backend.seed
|
||||
|
||||
脚本会创建全局唯一博主账号(bcrypt 哈希存储密码);已存在则跳过。
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from .auth import hash_password
|
||||
from .database import PROJECT_ROOT, SessionLocal, init_db
|
||||
from .models import ROLE_BLOGGER, User
|
||||
|
||||
|
||||
def seed_blogger() -> None:
|
||||
"""创建唯一博主账号(已存在则跳过)。"""
|
||||
username = os.getenv("BLOGGER_USERNAME", "").strip()
|
||||
email = os.getenv("BLOGGER_EMAIL", "").strip()
|
||||
password = os.getenv("BLOGGER_PASSWORD", "")
|
||||
|
||||
if not (username and email and password):
|
||||
raise SystemExit("请在 .env 中配置 BLOGGER_USERNAME / BLOGGER_EMAIL / BLOGGER_PASSWORD")
|
||||
if "@" not in email:
|
||||
raise SystemExit("BLOGGER_EMAIL 格式不正确")
|
||||
|
||||
init_db()
|
||||
db = SessionLocal()
|
||||
try:
|
||||
exists = db.query(User).filter((User.email == email) | (User.username == username)).first()
|
||||
if exists is not None:
|
||||
print(f"博主账号已存在(id={exists.id}, username={exists.username}),跳过创建")
|
||||
return
|
||||
blogger = User(
|
||||
email=email,
|
||||
username=username,
|
||||
password_hash=hash_password(password),
|
||||
role=ROLE_BLOGGER,
|
||||
)
|
||||
db.add(blogger)
|
||||
db.commit()
|
||||
print(f"博主账号创建成功(id={blogger.id}, username={blogger.username})")
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
seed_blogger()
|
||||
Reference in New Issue
Block a user