mirror of
http://88.130.71.182:3000/BlitTech/deals24togo_be.git
synced 2026-06-12 23:33:21 +00:00
Initial commit
This commit is contained in:
55
app/api/v1/endpoints/users.py
Normal file
55
app/api/v1/endpoints/users.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""User management endpoints."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
|
||||
from app.middleware.auth import get_current_user, require_admin
|
||||
from app.schemas.user import UserListResponse, UserResponse, UserUpdate
|
||||
from app.services.user_service import UserService
|
||||
|
||||
router = APIRouter(prefix="/users", tags=["Users"])
|
||||
|
||||
|
||||
@router.get("/me", response_model=UserResponse)
|
||||
def get_my_profile(user: dict = Depends(get_current_user)):
|
||||
svc = UserService()
|
||||
return svc.get_user(user["id"])
|
||||
|
||||
|
||||
@router.patch("/me", response_model=UserResponse)
|
||||
def update_my_profile(body: UserUpdate, user: dict = Depends(get_current_user)):
|
||||
svc = UserService()
|
||||
return svc.update_user(user["id"], body.model_dump(exclude_unset=True))
|
||||
|
||||
|
||||
@router.get("/{user_id}", response_model=UserResponse)
|
||||
def get_user(user_id: str, _admin: dict = Depends(require_admin)):
|
||||
svc = UserService()
|
||||
return svc.get_user(user_id)
|
||||
|
||||
|
||||
@router.get("/", response_model=UserListResponse)
|
||||
def list_users(
|
||||
page: int = Query(1, ge=1),
|
||||
page_size: int = Query(20, ge=1, le=100),
|
||||
role: Optional[str] = None,
|
||||
search: Optional[str] = None,
|
||||
_admin: dict = Depends(require_admin),
|
||||
):
|
||||
svc = UserService()
|
||||
return svc.list_users(page=page, page_size=page_size, role=role, search=search)
|
||||
|
||||
|
||||
@router.post("/{user_id}/verify", response_model=UserResponse)
|
||||
def verify_user(user_id: str, _admin: dict = Depends(require_admin)):
|
||||
svc = UserService()
|
||||
return svc.verify_user(user_id)
|
||||
|
||||
|
||||
@router.delete("/{user_id}")
|
||||
def delete_user(user_id: str, user: dict = Depends(get_current_user)):
|
||||
svc = UserService()
|
||||
return svc.delete_user(user_id, user["id"], user["role"])
|
||||
Reference in New Issue
Block a user