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

1"""User operation controller""" 

2 

3from fastapi import APIRouter, Depends 

4from fastapi.security import OAuth2PasswordRequestForm 

5 

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 

15 

16user_router = APIRouter() 

17 

18 

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) 

27 

28 

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) 

37 

38 

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)