auth.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import request from '@/utils/http'
  2. import { buildWebEncryptedLoginBody } from '@/utils/loginRsa'
  3. /**
  4. * Web端登录(RSA 加密传输账号密码)
  5. * @param params 登录参数 { username, password }
  6. * @returns 登录响应
  7. */
  8. export async function fetchLogin(params: { username: string; password: string }) {
  9. const body = await buildWebEncryptedLoginBody(params.username, params.password)
  10. return request.post<{
  11. token: string
  12. refreshToken: string
  13. expiresIn: number
  14. userInfo: {
  15. id: string
  16. username: string
  17. realName: string
  18. phone: string
  19. role: string
  20. regionId: string
  21. regionName: string
  22. avatarUrl?: string | null
  23. }
  24. }>({
  25. url: '/web/auth/login',
  26. data: body
  27. })
  28. }
  29. /**
  30. * 获取当前用户信息
  31. * @returns 用户信息
  32. */
  33. export function fetchGetUserInfo() {
  34. return request.get<{
  35. id: string
  36. username: string
  37. realName: string
  38. phone: string
  39. email?: string
  40. sex?: string
  41. remark?: string
  42. role: string
  43. regionId: string
  44. regionName: string
  45. regionIds?: string[]
  46. isSuperAdmin?: boolean
  47. isActive: boolean
  48. avatarUrl?: string | null
  49. }>({
  50. url: '/web/auth/current-user'
  51. })
  52. }
  53. /** 当前用户更新个人信息 */
  54. export function fetchUpdateProfile(data: {
  55. phoneNo?: string
  56. email?: string
  57. sex?: string
  58. remark?: string
  59. avatarUrl?: string
  60. }) {
  61. return request.put<{
  62. id: string
  63. username: string
  64. realName: string
  65. phone: string
  66. email?: string
  67. sex?: string
  68. remark?: string
  69. role: string
  70. regionId: string
  71. regionName: string
  72. avatarUrl?: string | null
  73. }>({
  74. url: '/web/auth/profile',
  75. data,
  76. showSuccessMessage: true
  77. })
  78. }
  79. /** 当前用户上传头像 */
  80. export function fetchUploadProfileAvatar(data: FormData) {
  81. return request.post<{ url: string }>({
  82. url: '/web/auth/upload-avatar',
  83. data
  84. })
  85. }
  86. /** 当前用户修改密码 */
  87. export function fetchChangePassword(data: { oldPassword: string; newPassword: string }) {
  88. return request.post({
  89. url: '/web/auth/change-password',
  90. data,
  91. showSuccessMessage: true
  92. })
  93. }
  94. /**
  95. * 获取当前用户菜单 code 权限
  96. */
  97. export function fetchGetMenuCodes() {
  98. return request.get<{
  99. isSuperAdmin: boolean
  100. all: boolean
  101. menuCodes: string[]
  102. }>({
  103. url: '/web/auth/menu-codes'
  104. })
  105. }
  106. /**
  107. * 刷新Token
  108. * @param refreshToken 刷新令牌
  109. * @returns 新令牌
  110. */
  111. export function fetchRefreshToken(refreshToken: string) {
  112. return request.post<{
  113. token: string
  114. refreshToken: string
  115. expiresIn: number
  116. }>({
  117. url: '/web/auth/refresh-token',
  118. params: { refreshToken }
  119. })
  120. }
  121. /**
  122. * 登出
  123. */
  124. export function fetchLogout() {
  125. return request.post({
  126. url: '/web/auth/logout'
  127. })
  128. }