index.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <script lang="ts" setup>
  2. import type { LoginAndRegisterParams } from '@vben/universal-ui';
  3. import { useRouter } from 'vue-router';
  4. import { useAccess } from '@vben/access';
  5. import { Button } from 'ant-design-vue';
  6. import { useAccessStore, useAppStore } from '#/store';
  7. defineOptions({ name: 'AccessBackend' });
  8. const { accessMode } = useAccess();
  9. const accessStore = useAccessStore();
  10. const appStore = useAppStore();
  11. const router = useRouter();
  12. function roleButtonType(role: string) {
  13. return accessStore.userRoles.includes(role) ? 'primary' : 'default';
  14. }
  15. async function changeAccount(role: string) {
  16. if (accessStore.userRoles.includes(role)) {
  17. return;
  18. }
  19. const accounts: Record<string, LoginAndRegisterParams> = {
  20. admin: {
  21. password: '123456',
  22. username: 'admin',
  23. },
  24. super: {
  25. password: '123456',
  26. username: 'vben',
  27. },
  28. user: {
  29. password: '123456',
  30. username: 'jack',
  31. },
  32. };
  33. const account = accounts[role];
  34. await appStore.resetAppState();
  35. await accessStore.authLogin(account, async () => {
  36. router.go(0);
  37. });
  38. }
  39. </script>
  40. <template>
  41. <div class="p-5">
  42. <div class="card-box p-5">
  43. <h1 class="text-xl font-semibold">前端页面访问权限演示</h1>
  44. <div class="text-foreground/80 mt-2">
  45. 切换不同的账号,观察左侧菜单变化。
  46. </div>
  47. </div>
  48. <template v-if="accessMode === 'frontend'">
  49. <div class="card-box mt-5 p-5 font-semibold">
  50. <div class="mb-3">
  51. <span class="text-lg">当前账号:</span>
  52. <span class="text-primary mx-4">
  53. {{ accessStore.userRoles }}
  54. </span>
  55. </div>
  56. <Button :type="roleButtonType('super')" @click="changeAccount('super')">
  57. 切换为 Super 账号
  58. </Button>
  59. <Button
  60. :type="roleButtonType('admin')"
  61. class="mx-4"
  62. @click="changeAccount('admin')"
  63. >
  64. 切换为 Admin 账号
  65. </Button>
  66. <Button :type="roleButtonType('user')" @click="changeAccount('user')">
  67. 切换为 User 账号
  68. </Button>
  69. </div>
  70. </template>
  71. </div>
  72. </template>