sso.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import { message } from 'antd'
  2. import router from '../router/index.tsx'
  3. import http from './index'
  4. import {
  5. userLogin, sendVerificationCode, loginPhone,
  6. userLogout, changePassword, forgotPassword
  7. } from './api.ts'
  8. export function getAccessToken(): string {
  9. const accessToken = localStorage.getItem('token')
  10. return accessToken || ''
  11. }
  12. export function setAccessToken(token: string): void {
  13. localStorage.removeItem('token')
  14. localStorage.setItem('token', token)
  15. }
  16. export function clearAccessToken() {
  17. localStorage.removeItem('token')
  18. }
  19. type loginType = { token: string, isAdmin: boolean, menus: string[] }
  20. export function login(account: string, password: string) {
  21. return http.post(userLogin, {
  22. account,
  23. password
  24. }).then(res => {
  25. const { code, msg, data = {} } = res
  26. const { token, } = data as loginType
  27. if (code === 0) {
  28. message.success('登录成功')
  29. setAccessToken(token)
  30. return true
  31. }
  32. message.error(msg)
  33. return false
  34. }).catch(() => {})
  35. }
  36. export function sendCode(phone: string) {
  37. return http.post(sendVerificationCode, {
  38. phone
  39. }).then(res => {
  40. const { code, msg = '发送失败' } = res
  41. if (code === 0) {
  42. message.success('短信已发送,请注意查收')
  43. return true
  44. }
  45. message.error(msg)
  46. return false
  47. }).catch(() => {})
  48. }
  49. export function loginBySendCode(phone: string, verificationCode: string) {
  50. return http.post(loginPhone, {
  51. phone,
  52. verificationCode
  53. }).then(res => {
  54. const { code, msg, data = {} } = res
  55. const { token } = data as loginType
  56. if (code === 0) {
  57. message.success('登录成功')
  58. setAccessToken(token)
  59. return true
  60. }
  61. message.error(msg)
  62. return false
  63. }).catch(() => {})
  64. }
  65. export function logout() {
  66. return http.post(userLogout).then(res => {
  67. const { code, msg } = res
  68. if (code === 0) {
  69. message.success('退出登录成功')
  70. clearAccessToken()
  71. router.navigate('/login')
  72. return true
  73. }
  74. message.error(msg)
  75. return false
  76. }).catch(() => {})
  77. }
  78. export function changeLoginPassword(oldPassword: string, newPassword: string) {
  79. return http.post(changePassword, {
  80. oldPassword,
  81. newPassword
  82. }).then(res => {
  83. const { code, msg } = res
  84. if (code === 0) {
  85. message.success('修改密码成功')
  86. clearAccessToken()
  87. router.navigate('/login')
  88. return true
  89. }
  90. message.error(msg)
  91. return false
  92. }).catch(() => {})
  93. }
  94. export function forgotLoginPassword(phone: string, verificationCode: string, newPassword: string) {
  95. return http.post(forgotPassword, {
  96. phone,
  97. verificationCode,
  98. newPassword
  99. }).then(res => {
  100. const { code, msg } = res
  101. if (code === 0) {
  102. message.success('密码编辑成功')
  103. clearAccessToken()
  104. return true
  105. }
  106. message.error(msg)
  107. return false
  108. }).catch(() => {})
  109. }
  110. export default {
  111. getAccessToken,
  112. setAccessToken,
  113. clearAccessToken,
  114. login,
  115. sendCode,
  116. loginBySendCode,
  117. logout,
  118. changeLoginPassword,
  119. forgotLoginPassword,
  120. }