mirror of
https://github.com/furyhawk/agent_alpha.git
synced 2026-07-21 02:25:34 +00:00
feat(auth): automatically assign admin role to the first registered user
This commit is contained in:
@@ -216,6 +216,18 @@ async def list_users(
|
||||
return list(result.scalars().all())
|
||||
|
||||
|
||||
async def count_users(
|
||||
session: AsyncSession | None = None,
|
||||
) -> int:
|
||||
"""Return the total number of users (including inactive)."""
|
||||
if session is None:
|
||||
async with _session_factory() as session:
|
||||
result = await session.execute(select(User))
|
||||
return len(result.scalars().all())
|
||||
result = await session.execute(select(User))
|
||||
return len(result.scalars().all())
|
||||
|
||||
|
||||
async def update_user(
|
||||
user_id: uuid.UUID,
|
||||
session: AsyncSession,
|
||||
|
||||
@@ -91,11 +91,17 @@ async def register_endpoint(
|
||||
detail=f"User '{body.username}' already exists",
|
||||
)
|
||||
|
||||
# First user to register becomes an admin automatically.
|
||||
from backend.core.database import count_users
|
||||
|
||||
total_users = await count_users(session=session)
|
||||
role = "admin" if total_users == 0 else body.role
|
||||
|
||||
user = await create_user_with_password(
|
||||
username=body.username,
|
||||
display_name=body.display_name,
|
||||
password=body.password,
|
||||
role=body.role,
|
||||
role=role,
|
||||
team=body.team,
|
||||
session=session,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user