nex_basse/backend/scripts/init_admin.py

48 lines
1.4 KiB
Python

import os
from sqlalchemy.orm import Session
from app.core.config import get_settings
from app.core.security import hash_password
from app.core.db import engine
from app.models import User, Role, UserRole
def main():
username = os.getenv("INIT_ADMIN_USERNAME", "admin")
password = os.getenv("INIT_ADMIN_PASSWORD", "123456")
with Session(engine) as db:
role = db.query(Role).filter(Role.role_code == "admin").first()
if not role:
role = Role(role_code="admin", role_name="管理员")
db.add(role)
db.flush()
user = db.query(User).filter(User.username == username).first()
if not user:
user = User(
username=username,
display_name="Administrator",
email=None,
phone=None,
password_hash=hash_password(password),
status=1,
is_deleted=0,
)
db.add(user)
db.flush()
else:
user.password_hash = hash_password(password)
user.status = 1
user.is_deleted = 0
exist_link = db.query(UserRole).filter(UserRole.user_id == user.user_id, UserRole.role_id == role.role_id).first()
if not exist_link:
db.add(UserRole(user_id=user.user_id, role_id=role.role_id))
db.commit()
print(f"Admin ready: {username}")
if __name__ == "__main__":
main()