33 lines
1.7 KiB
Python
33 lines
1.7 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from services.user_service import UserService
|
|
from models.schemas import UserUpdateRole, UserBlockBan, UserResponse
|
|
from config.database import get_db
|
|
from services.auth_service import AuthService
|
|
from typing import Optional
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/", response_model=list[UserResponse])
|
|
async def list_users(status: Optional[str] = None, db=Depends(get_db)):
|
|
return await UserService.list_users(status, db)
|
|
|
|
@router.patch("/role", status_code=200, dependencies=[Depends(AuthService.admin_required)])
|
|
async def change_role(user_update: UserUpdateRole, db: AsyncSession = Depends(get_db)):
|
|
return await UserService.change_user_role(user_update, db)
|
|
|
|
@router.post("/block", status_code=200, dependencies=[Depends(AuthService.admin_required)])
|
|
async def block_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)):
|
|
return await UserService.block_user(user_action, db)
|
|
|
|
@router.post("/ban", status_code=200, dependencies=[Depends(AuthService.admin_required)])
|
|
async def ban_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)):
|
|
return await UserService.ban_user(user_action, db)
|
|
|
|
@router.post("/unblock", status_code=200, dependencies=[Depends(AuthService.admin_required)])
|
|
async def unblock_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)):
|
|
return await UserService.unblock_user(user_action, db)
|
|
|
|
@router.post("/unban", status_code=200, dependencies=[Depends(AuthService.admin_required)])
|
|
async def unban_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)):
|
|
return await UserService.unban_user(user_action, db) |