login.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding: utf-8 -*-
  2. # @Author : YY
  3. from ruoyi_common.base.model import AjaxResponse
  4. from ruoyi_common.domain.entity import SysUser
  5. from ruoyi_common.domain.vo import LoginBody
  6. from ruoyi_common.descriptor.serializer import JsonSerializer
  7. from ruoyi_common.descriptor.validator import BodyValidator
  8. from ruoyi_common.utils import security_util as SecurityUtil
  9. from ruoyi_common.constant import Constants
  10. from ruoyi_system.service import SysMenuService
  11. from ruoyi_framework.service import LoginService,SysPermissionService
  12. from ... import reg
  13. @reg.api.route("/login", methods=["POST"])
  14. @BodyValidator()
  15. @JsonSerializer()
  16. def index_login(dto:LoginBody):
  17. '''
  18. 登录接口
  19. '''
  20. token = LoginService.login(dto)
  21. ajax_response = AjaxResponse.from_success()
  22. setattr(ajax_response, Constants.TOKEN, token)
  23. return ajax_response
  24. @reg.api.route("/getInfo", methods=["GET"])
  25. @JsonSerializer()
  26. def index_get_info():
  27. '''
  28. 获取用户信息接口
  29. '''
  30. user:SysUser = SecurityUtil.get_login_user().user
  31. roles = SysPermissionService.get_role_permission(user)
  32. perms = SysPermissionService.get_menu_permission(user)
  33. ajax_response = AjaxResponse.from_success()
  34. setattr(ajax_response, "roles", list(roles))
  35. setattr(ajax_response, "permissions", list(perms))
  36. setattr(ajax_response, "user", user.model_dump())
  37. return ajax_response
  38. @reg.api.route("/getRouters", methods=["GET"])
  39. @JsonSerializer()
  40. def index_get_routers():
  41. '''
  42. 获取路由信息接口
  43. '''
  44. user_id = SecurityUtil.get_user_id()
  45. menus = SysMenuService.select_menu_tree_by_user_id(user_id)
  46. ajax_response = AjaxResponse.from_success(
  47. data=SysMenuService.build_menus(menus)
  48. )
  49. return ajax_response
  50. @reg.api.route("/logout", methods=["POST"])
  51. @JsonSerializer()
  52. def index_logout():
  53. '''
  54. 登出接口
  55. '''
  56. flag = LoginService.logout()
  57. return AjaxResponse.from_success(msg="登出成功") \
  58. if flag else AjaxResponse.from_error(msg="登出异常")