login.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import request from '@/utils/request';
  2. import { AxiosPromise } from 'axios';
  3. import { LoginData, LoginResult, VerifyCodeResult, TenantInfo } from './types';
  4. import { UserInfo } from '@/api/system/user/types';
  5. // pc端固定客户端授权id
  6. const clientId = import.meta.env.VITE_APP_CLIENT_ID;
  7. /**
  8. * @param data {LoginData}
  9. * @returns
  10. */
  11. export function login(data: LoginData): AxiosPromise<LoginResult> {
  12. // 构建完全不包含验证码字段的登录参数
  13. const params = {
  14. tenantId: data.tenantId,
  15. username: data.username,
  16. password: data.password,
  17. clientId: data.clientId || clientId || 'e5cd7e4891bf95d1d19206ce24a7b32e',
  18. grantType: data.grantType || 'password'
  19. };
  20. // 调试:打印登录参数(生产环境应移除)
  21. console.log('登录请求参数:', params);
  22. return request({
  23. url: '/auth/login',
  24. headers: {
  25. isToken: false,
  26. isEncrypt: 'true',
  27. repeatSubmit: false
  28. },
  29. method: 'post',
  30. data: params
  31. });
  32. }
  33. // 注册方法
  34. export function register(data: any) {
  35. const params = {
  36. ...data,
  37. clientId: clientId,
  38. grantType: 'password'
  39. };
  40. return request({
  41. url: '/auth/register',
  42. headers: {
  43. isToken: false,
  44. isEncrypt: 'true',
  45. repeatSubmit: false
  46. },
  47. method: 'post',
  48. data: params
  49. });
  50. }
  51. /**
  52. * 注销
  53. */
  54. export function logout() {
  55. if (import.meta.env.VITE_APP_SSE === 'true') {
  56. request({
  57. url: '/resource/sse/close',
  58. method: 'get'
  59. });
  60. }
  61. return request({
  62. url: '/auth/logout',
  63. method: 'post'
  64. });
  65. }
  66. /**
  67. * 获取验证码
  68. */
  69. export function getCodeImg(): AxiosPromise<VerifyCodeResult> {
  70. return request({
  71. url: '/auth/code',
  72. headers: {
  73. isToken: false
  74. },
  75. method: 'get',
  76. timeout: 20000
  77. });
  78. }
  79. /**
  80. * 第三方登录
  81. */
  82. export function callback(data: LoginData): AxiosPromise<any> {
  83. const LoginData = {
  84. ...data,
  85. clientId: clientId,
  86. grantType: 'social'
  87. };
  88. return request({
  89. url: '/auth/social/callback',
  90. method: 'post',
  91. data: LoginData
  92. });
  93. }
  94. // 获取用户详细信息
  95. export function getInfo(): AxiosPromise<UserInfo> {
  96. return request({
  97. url: '/system/user/getInfo',
  98. method: 'get'
  99. });
  100. }
  101. // 获取租户列表
  102. export function getTenantList(isToken: boolean): AxiosPromise<TenantInfo> {
  103. return request({
  104. url: '/auth/tenant/list',
  105. headers: {
  106. isToken: isToken
  107. },
  108. method: 'get'
  109. });
  110. }