42 lines
867 B
JavaScript
42 lines
867 B
JavaScript
|
|
import { defineStore } from 'pinia';
|
||
|
|
import { computed, ref } from 'vue';
|
||
|
|
import apiClient from '@/services/apiClient';
|
||
|
|
|
||
|
|
export const useAuthStore = defineStore('auth', () => {
|
||
|
|
// state
|
||
|
|
const accessToken = ref(null)
|
||
|
|
const user = ref(null)
|
||
|
|
|
||
|
|
// getters
|
||
|
|
const isAuthenticated = computed(() => !!accessToken.value)
|
||
|
|
|
||
|
|
// actions
|
||
|
|
const login = async (email, password) => {
|
||
|
|
try {
|
||
|
|
const response = await apiClient.post(
|
||
|
|
"/user/login",
|
||
|
|
{ email, password }
|
||
|
|
)
|
||
|
|
const { access_token } = response.data
|
||
|
|
accessToken.value = access_token
|
||
|
|
|
||
|
|
console.log('Email', email)
|
||
|
|
console.log('Password', password)
|
||
|
|
} catch (error) {
|
||
|
|
console.log(error)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const logout = () => {
|
||
|
|
console.log('logout placeholder')
|
||
|
|
}
|
||
|
|
|
||
|
|
return {
|
||
|
|
accessToken,
|
||
|
|
user,
|
||
|
|
isAuthenticated,
|
||
|
|
login,
|
||
|
|
logout
|
||
|
|
}
|
||
|
|
})
|