UNPKG

nuxt-live-editor

Version:
46 lines (45 loc) 1.97 kB
import { useDirectusToken, useDirectus, useNuxtApp, useRoute, useRuntimeConfig } from "#imports"; import { storeToRefs } from "pinia"; import { ref } from "vue"; import { useLiveEditorStore } from "../stores/useLiveEditorStore.mjs"; import { useSettingPopup } from "../stores/useSettingPopup.mjs"; export const useUser = async () => { const route = useRoute(); const { is_open_popup_login } = storeToRefs(useSettingPopup()); const { mode_login } = storeToRefs(useLiveEditorStore()); const config = useRuntimeConfig().public; const { refreshTokens } = useDirectusToken(); const current_user = ref(null); const directus = useDirectus(); try { const cookie = useNuxtApp()._cookies; const cookieAccessToken = config.directus?.cookieNameToken; const cookieNameRefreshToken = config.directus?.cookieNameRefreshToken; if (route.query?.live_authentication == "true") { is_open_popup_login.value = true; } else { if (!cookieAccessToken || !cookieNameRefreshToken) throw new Error("Not cookie directus"); if (cookie[cookieAccessToken].value) { const user = await directus("users/me?fields=*&fields=role.*&fields=companies.*"); if (user && user?.data) current_user.value = user.data; return { current_user }; } if (cookie[cookieNameRefreshToken].value) { await refreshTokens(); console.log("Refresh auth !"); const user = await directus("users/me?fields=*&fields=role.*&fields=companies.*"); if (user && user?.data) current_user.value = user.data; return { current_user }; } if (!cookie[cookieAccessToken].value && !cookie[cookieNameRefreshToken].value) { throw new Error("Error token in cookie"); } } } catch (e) { if (route.query?.live_authentication == "true" && mode_login.value) { is_open_popup_login.value = true; } console.info("Not auth ... ", e.message); } return { current_user }; };