Files
module-farmasi/composables/useAuthInfo.ts
T
2026-03-31 11:11:39 +07:00

50 lines
1.2 KiB
TypeScript

import { ref } from 'vue';
import api from '~/utils/api';
import type { AuthInfoResponse } from '~/types/auth';
const authInfo = ref<AuthInfoResponse | null>(null);
const isLoading = ref(false);
const errorMessage = ref<string | null>(null);
export const useAuthInfo = () => {
const fetchAuthInfo = async (accessToken: string) => {
if (!accessToken || !accessToken.trim()) {
throw new Error('accessToken is required');
}
isLoading.value = true;
errorMessage.value = null;
try {
const response = await api.get<AuthInfoResponse>('/api/v1/auth/info', {
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${accessToken}`,
},
});
authInfo.value = response.data;
return response.data;
} catch (error) {
authInfo.value = null;
errorMessage.value = error instanceof Error ? error.message : 'Failed to fetch auth info';
throw error;
} finally {
isLoading.value = false;
}
};
const clearAuthInfo = () => {
authInfo.value = null;
errorMessage.value = null;
};
return {
authInfo,
isLoading,
errorMessage,
fetchAuthInfo,
clearAuthInfo,
};
};