BookSystem/backend/auth/init_data.py
jayhgq f1da855793 feat(auth): 实现用户认证与授权功能
- 添加用户登录、登出及令牌管理功能
- 实现基于JWT和Redis的认证系统
- 完善用户和角色管理API
- 添加密码加密与验证功能
- 配置数据库连接和Redis客户端
- 实现中间件进行权限验证
- 初始化管理员和测试用户数据
- 更新模型和接口文档
- 添加测试API和配置文件
2026-02-28 18:08:53 +08:00

103 lines
2.9 KiB
Python

from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select
from models import Role, User
from utils.password import get_password_hash
async def init_roles(db: AsyncSession):
"""初始化角色数据"""
# 检查是否已经存在角色数据
result = await db.execute(select(Role))
existing_roles = result.scalars().all()
if existing_roles:
print("角色数据已存在,跳过初始化")
return
# 创建初始角色
roles = [
Role(name="管理员", creator="system"),
Role(name="普通用户", creator="system"),
Role(name="访客", creator="system"),
]
for role in roles:
db.add(role)
await db.commit()
print("角色数据初始化完成")
async def init_admin_user(db: AsyncSession):
"""初始化管理员用户"""
# 检查是否已经存在管理员用户
result = await db.execute(select(User).filter(User.username == "admin"))
existing_admin = result.scalar_one_or_none()
if existing_admin:
print("管理员用户已存在,跳过初始化")
return
# 获取管理员角色
result = await db.execute(select(Role).filter(Role.name == "管理员"))
admin_role = result.scalar_one_or_none()
if not admin_role:
print("管理员角色不存在,请先初始化角色数据")
return
# 创建管理员用户
admin_user = User(
username="admin",
nickname="系统管理员",
email="admin@example.com",
phone="13800138000",
password_hash=get_password_hash("admin"),
role_id=admin_role.id,
avatar="",
wx_openid=""
)
db.add(admin_user)
await db.commit()
print("管理员用户初始化完成")
async def init_test_user(db: AsyncSession):
"""初始化测试用户"""
# 检查是否已经存在测试用户
result = await db.execute(select(User).filter(User.username == "test"))
existing_test_user = result.scalar_one_or_none()
if existing_test_user:
print("测试用户已存在,跳过初始化")
return
# 获取普通用户角色
result = await db.execute(select(Role).filter(Role.name == "普通用户"))
user_role = result.scalar_one_or_none()
if not user_role:
print("普通用户角色不存在,请先初始化角色数据")
return
# 创建测试用户
test_user = User(
username="test",
nickname="测试用户",
email="test@example.com",
phone="13800138001",
password_hash=get_password_hash("test"),
role_id=user_role.id,
avatar="",
wx_openid=""
)
db.add(test_user)
await db.commit()
print("测试用户初始化完成")
async def init_all_data(db: AsyncSession):
"""初始化所有数据"""
print("开始初始化数据库数据...")
await init_roles(db)
await init_admin_user(db)
await init_test_user(db)
print("数据库数据初始化完成")