65 lines
1.7 KiB
Python
65 lines
1.7 KiB
Python
"""Create default admin user"""
|
|
|
|
import asyncio
|
|
import sys
|
|
|
|
sys.path.insert(0, ".")
|
|
|
|
from app.core.security import get_password_hash
|
|
from app.db.session import async_session_factory
|
|
from app.models.user import User
|
|
|
|
DEFAULT_LOGIN_USERS = (
|
|
{
|
|
"username": "admin",
|
|
"email": "admin@planet.local",
|
|
"password": "admin123",
|
|
"role": "super_admin",
|
|
},
|
|
{
|
|
"username": "linkong",
|
|
"email": "linkong@planet.local",
|
|
"password": "12345678",
|
|
"role": "super_admin",
|
|
},
|
|
)
|
|
|
|
|
|
async def create_admin():
|
|
from sqlalchemy import text
|
|
|
|
async with async_session_factory() as session:
|
|
created = []
|
|
for default_user in DEFAULT_LOGIN_USERS:
|
|
result = await session.execute(
|
|
text("SELECT id FROM users WHERE username = :username"),
|
|
{"username": default_user["username"]},
|
|
)
|
|
if result.fetchone():
|
|
continue
|
|
|
|
session.add(
|
|
User(
|
|
username=default_user["username"],
|
|
email=default_user["email"],
|
|
password_hash=get_password_hash(default_user["password"]),
|
|
role=default_user["role"],
|
|
is_active=True,
|
|
)
|
|
)
|
|
created.append(default_user)
|
|
|
|
await session.commit()
|
|
if not created:
|
|
print("Default login users already exist")
|
|
return
|
|
|
|
for default_user in created:
|
|
print(
|
|
f"Default login user created: {default_user['username']} / {default_user['password']}"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(create_admin())
|