import { useUserinfoStore } from "@/stores/UserinfoStore" import { $fetch } from 'ohmyfetch' export interface useAuth { login(authCode: string): Promise logout(): Promise authenticateAndLoadUserInfo(): Promise } export default (): useAuth => { const userInfoStore = useUserinfoStore() return { authenticateAndLoadUserInfo: async (): Promise => { const userInfo = await $fetch('/api/userinfo') userInfoStore.setUserInfo(userInfo) }, login: async (authCode: string): Promise => { if (authCode.length != 6) { throw Error('login failed') } const resp = await $fetch(`/api/login?code=${authCode}`) if (resp !== 'ok') { throw Error('login failed') } }, logout: async (): Promise => { await $fetch('/api/logout') }, } }