ver 2
This commit is contained in:
@@ -1,17 +1,20 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { ref } from 'vue';
|
||||
import {defineStore} from 'pinia';
|
||||
import {ref} from 'vue';
|
||||
import apiClient from "@/services/axiosSetup";
|
||||
import {useRoute, useRouter} from "vue-router";
|
||||
|
||||
export const useUserStore = defineStore('user', () => {
|
||||
const user = ref(null);
|
||||
const loadingUser = ref(true);
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
async function fetchUserProfile() {
|
||||
// Убираем проверку на `loadingUser`, чтобы не блокировать запрос
|
||||
if (!user.value) {
|
||||
loadingUser.value = true;
|
||||
try {
|
||||
const response = await apiClient.get('/auth/users/me'); // запрос к API для получения данных пользователя
|
||||
const response = await apiClient.get('/auth/me'); // запрос к API для получения данных пользователя
|
||||
if (response.status !== 200) throw new Error('Ошибка загрузки данных пользователя');
|
||||
|
||||
user.value = response.data;
|
||||
@@ -24,5 +27,29 @@ export const useUserStore = defineStore('user', () => {
|
||||
}
|
||||
}
|
||||
|
||||
return { user, loadingUser, fetchUserProfile };
|
||||
// Основная функция для логина
|
||||
async function login( username, password, tg_id=null) {
|
||||
try {
|
||||
let response;
|
||||
if (tg_id) {
|
||||
response = await apiClient.post('/auth/token/tg', {tg_id: tg_id});
|
||||
} else {
|
||||
response = await apiClient.post('/auth/login', {
|
||||
username: username,
|
||||
password: password,
|
||||
});
|
||||
}
|
||||
|
||||
const token = response.data.token;
|
||||
localStorage.setItem('token', token);
|
||||
apiClient.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
||||
await fetchUserProfile();
|
||||
await router.push(route.query['back'] ? route.query['back'].toString() : '/');
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
alert('Ошибка входа. Проверьте логин и пароль.');
|
||||
}
|
||||
};
|
||||
|
||||
return {user, loadingUser, fetchUserProfile, login};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user