store access token
This commit is contained in:
parent
f66c014a36
commit
6d9b801555
1 changed files with 33 additions and 28 deletions
|
|
@ -1,51 +1,56 @@
|
|||
import { defineStore } from 'pinia';
|
||||
import { computed, ref } from 'vue';
|
||||
import { apiClient } from '@/services/apiClient';
|
||||
import router from '@/router/index.js';
|
||||
import { defineStore } from 'pinia'
|
||||
import { computed, ref } from 'vue'
|
||||
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(localStorage.getItem('accessToken'))
|
||||
const user = ref(null)
|
||||
|
||||
// getters
|
||||
const isAuthenticated = computed(() => !!accessToken.value);
|
||||
const isAuthenticated = computed(() => !!accessToken.value)
|
||||
|
||||
// actions
|
||||
const setToken = (token) => {
|
||||
accessToken.value = token;
|
||||
};
|
||||
accessToken.value = token
|
||||
if (token) {
|
||||
localStorage.setItem('accessToken', token)
|
||||
} else {
|
||||
localStorage.removeItem('accessToken')
|
||||
}
|
||||
}
|
||||
|
||||
const login = async (email, password) => {
|
||||
try {
|
||||
const response = await apiClient.post('/user/auth/login', { email, password });
|
||||
const { access_token, user: userData } = response;
|
||||
const response = await apiClient.post('/user/auth/login', { email, password })
|
||||
const { access_token, user: userData } = response
|
||||
|
||||
setToken(access_token);
|
||||
user.value = userData || null;
|
||||
setToken(access_token)
|
||||
user.value = userData || null
|
||||
|
||||
router.push('/');
|
||||
router.push({ name: 'startPage'})
|
||||
} catch (error) {
|
||||
console.error('Login error:', error);
|
||||
console.error('Login error:', error)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const logout = async () => {
|
||||
accessToken.value = null;
|
||||
user.value = null;
|
||||
setToken(null)
|
||||
user.value = null
|
||||
try {
|
||||
await apiClient.post('/user/auth/logout');
|
||||
await apiClient.post('/user/auth/logout')
|
||||
} catch (error) {
|
||||
console.error('Logout error:', error);
|
||||
console.error('Logout error:', error)
|
||||
}
|
||||
router.push('/startPage');
|
||||
};
|
||||
router.push('/startPage')
|
||||
}
|
||||
|
||||
const forceLogout = () => {
|
||||
accessToken.value = null;
|
||||
user.value = null;
|
||||
router.push('/startPage');
|
||||
};
|
||||
setToken(null)
|
||||
user.value = null
|
||||
router.push({ name: 'startPage'})
|
||||
}
|
||||
|
||||
return {
|
||||
accessToken,
|
||||
|
|
@ -55,5 +60,5 @@ export const useAuthStore = defineStore('auth', () => {
|
|||
login,
|
||||
logout,
|
||||
forceLogout,
|
||||
};
|
||||
});
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue