added: login, logout and auto refresh token

This commit is contained in:
nquidox 2025-09-10 23:29:27 +03:00
parent 72c796c429
commit f66c014a36
9 changed files with 189 additions and 63 deletions

View file

@ -1,41 +1,59 @@
import { defineStore } from 'pinia';
import { computed, ref } from 'vue';
import apiClient from '@/services/apiClient';
import { apiClient } from '@/services/apiClient';
import router from '@/router/index.js';
export const useAuthStore = defineStore('auth', () => {
// state
const accessToken = ref(null)
const user = ref(null)
const accessToken = ref(null);
const user = ref(null);
// getters
const isAuthenticated = computed(() => !!accessToken.value)
const isAuthenticated = computed(() => !!accessToken.value);
// actions
const setToken = (token) => {
accessToken.value = token;
};
const login = async (email, password) => {
try {
const response = await apiClient.post(
"/user/login",
{ email, password }
)
const { access_token } = response.data
accessToken.value = access_token
const response = await apiClient.post('/user/auth/login', { email, password });
const { access_token, user: userData } = response;
console.log('Email', email)
console.log('Password', password)
setToken(access_token);
user.value = userData || null;
router.push('/');
} catch (error) {
console.log(error)
console.error('Login error:', error);
}
}
};
const logout = () => {
console.log('logout placeholder')
}
const logout = async () => {
accessToken.value = null;
user.value = null;
try {
await apiClient.post('/user/auth/logout');
} catch (error) {
console.error('Logout error:', error);
}
router.push('/startPage');
};
const forceLogout = () => {
accessToken.value = null;
user.value = null;
router.push('/startPage');
};
return {
accessToken,
user,
isAuthenticated,
setToken,
login,
logout
}
})
logout,
forceLogout,
};
});