import { wxLogin } from '~~/api/account' import { PopupTypeEnum, useAccount } from '~~/layouts/components/account/useAccount' import { useAppStore } from '~~/stores/app' import { useUserStore } from '~~/stores/user' export default defineNuxtRouteMiddleware(async (to, from) => { const appStore = useAppStore() const userStore = useUserStore() const { setPopupType, toggleShowPopup } = useAccount() const isForceBindMobile = appStore.getLoginConfig.coerce_mobile const { code, state } = to.query delete to.query.code delete to.query.state try { if (code && state) { const data = await wxLogin({ code, state }) if (isForceBindMobile && !data.mobile) { userStore.temToken = data.token setPopupType(PopupTypeEnum.BIND_MOBILE) toggleShowPopup(true) return } userStore.login(data.token) await userStore.getUser() return navigateTo(to) } } catch (error) { return navigateTo(to) } })