user.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { MockMethod } from 'vite-plugin-mock'
  2. import { Random } from '~/mock/utils'
  3. const tokens: { [key: string]: string } = {
  4. admin: `admin-token-${Random.guid()}-${new Date().getTime()}`,
  5. editor: `editor-token-${Random.guid()}-${new Date().getTime()}`,
  6. test: `test-token-${Random.guid()}-${new Date().getTime()}`,
  7. }
  8. const username2role: { [key: string]: string[] } = {
  9. admin: ['Admin'],
  10. editor: ['Editor'],
  11. test: ['Admin', 'Editor'],
  12. }
  13. const role2permission: { [key: string]: string[] } = {
  14. Admin: ['read:system', 'write:system', 'delete:system'],
  15. Editor: ['read:system', 'write:system'],
  16. Test: ['read:system'],
  17. }
  18. export default [
  19. {
  20. url: '/publicKey',
  21. method: 'get',
  22. response() {
  23. return {
  24. code: 200,
  25. msg: 'success',
  26. data: {
  27. mockServer: true,
  28. publicKey:
  29. 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBT2vr+dhZElF73FJ6xiP181txKWUSNLPQQlid6DUJhGAOZblluafIdLmnUyKE8mMHhT3R+Ib3ssZcJku6Hn72yHYj/qPkCGFv0eFo7G+GJfDIUeDyalBN0QsuiE/XzPHJBuJDfRArOiWvH0BXOv5kpeXSXM8yTt5Na1jAYSiQ/wIDAQAB',
  30. },
  31. }
  32. },
  33. },
  34. {
  35. url: '/login',
  36. method: 'post',
  37. response({ body }: any) {
  38. const { username } = body
  39. const token = tokens[username]
  40. if (!token)
  41. return {
  42. code: 500,
  43. msg: '帐户或密码不正确',
  44. }
  45. return {
  46. code: 200,
  47. msg: 'success',
  48. data: { token },
  49. }
  50. },
  51. },
  52. {
  53. url: '/register',
  54. method: 'post',
  55. response() {
  56. return {
  57. code: 200,
  58. msg: '模拟注册成功',
  59. data: { token: tokens['admin'] },
  60. }
  61. },
  62. },
  63. {
  64. url: '/userInfo',
  65. method: 'get',
  66. response(request: any) {
  67. const authorization = request.headers.authorization || request.headers.Authorization
  68. if (!authorization.startsWith('Bearer '))
  69. return {
  70. code: 401,
  71. msg: '令牌无效',
  72. }
  73. const username = authorization.replace('Bearer ', '').split('-token-')[0]
  74. const roles = username2role[username] || []
  75. const permissions = [...new Set(roles.flatMap((role) => role2permission[role]))]
  76. return {
  77. code: 200,
  78. msg: 'success',
  79. data: {
  80. username,
  81. roles,
  82. permissions,
  83. avatar: './static/svg/avatar.svg',
  84. },
  85. }
  86. },
  87. },
  88. {
  89. url: '/logout',
  90. method: 'get',
  91. response() {
  92. return {
  93. code: 200,
  94. msg: 'success',
  95. }
  96. },
  97. },
  98. ] as MockMethod[]