index.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <template>
  2. <van-loading v-show="loading"/>
  3. </template>
  4. <script setup lang="ts">
  5. import { ref, onMounted, nextTick } from 'vue';
  6. import { useRoute, useRouter } from 'vue-router';
  7. import { callback, getInfo } from '@/api/login';
  8. import { setToken, getToken } from '@/utils/auth';
  9. import useUserStore from "@/store/modules/user";
  10. const route = useRoute();
  11. const router = useRouter();
  12. const useUser = useUserStore();
  13. const loading = ref(true);
  14. const do_callback = () => {
  15. const code = route.query.code as string;
  16. const state = route.query.state as string;
  17. callback({code, state}).then((res)=>{
  18. loading.value = false;
  19. var access_token = res.data.access_token;
  20. var redirect_url = res.data.redirect_url;
  21. setToken(access_token);
  22. console.log('redirect_url:', redirect_url);
  23. setTimeout(function() {
  24. getUserInfo(redirect_url)
  25. }, 500);
  26. })
  27. }
  28. const getUserInfo = (redirect_url) => {
  29. getInfo().then((res)=>{
  30. const roles = res.data.roles;
  31. console.log('roles', roles);
  32. if(roles.includes("superadmin")) {
  33. useUser.setRoles("leader");
  34. }
  35. if(roles.includes("super_ld")) {
  36. useUser.setRoles("leader");
  37. }
  38. if(roles.includes("super_worker")) {
  39. useUser.setRoles("worker");
  40. }
  41. router.push(redirect_url);
  42. })
  43. };
  44. onMounted(() => {
  45. nextTick(() => {
  46. do_callback();
  47. });
  48. });
  49. </script>