Coverage for fss\starter\system\api\v1\user_controller.py: 96%
25 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-11 19:09 +0800
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-11 19:09 +0800
1"""User operation controller"""
3from fastapi import APIRouter, Depends
4from fastapi.security import OAuth2PasswordRequestForm
6from fss.common.result import result
7from fss.common.result.result import BaseResponse
8from fss.common.schema.schema import Token, CurrentUser
9from fss.common.security.security import get_current_user
10from fss.common.util.security import get_password_hash
11from fss.starter.system.model.user_do import UserDO
12from fss.starter.system.schema.user_schema import UserCreateCmd, UserQuery, LoginCmd
13from fss.starter.system.service.impl.user_service_impl import get_user_service
14from fss.starter.system.service.user_service import UserService
16user_router = APIRouter()
19# User registration
20@user_router.post("/register")
21async def create_user(
22 create_data: UserCreateCmd, user_service: UserService = Depends(get_user_service)
23) -> BaseResponse[int]:
24 create_data.password = await get_password_hash(create_data.password)
25 user: UserDO = await user_service.save(data=create_data)
26 return result.success(data=user.id)
29# Query user info
30@user_router.get("/me")
31async def get_user(
32 user_service: UserService = Depends(get_user_service),
33 current_user: CurrentUser = Depends(get_current_user()),
34) -> BaseResponse[UserQuery]:
35 user: UserQuery = await user_service.find_by_id(id=current_user.user_id)
36 return result.success(data=user)
39# User login
40@user_router.post("/login")
41async def login(
42 login_form: OAuth2PasswordRequestForm = Depends(),
43 user_service: UserService = Depends(get_user_service),
44) -> Token:
45 loginCmd = LoginCmd(username=login_form.username, password=login_form.password)
46 return await user_service.login(loginCmd)