auth
This commit is contained in:
@@ -37,41 +37,65 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import qs from 'qs';
|
import qs from 'qs';
|
||||||
import {computed, ref} from 'vue';
|
import { computed, ref, onMounted } from 'vue';
|
||||||
import { useRoute, useRouter } from 'vue-router';
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
import apiClient from '@/services/axiosSetup';
|
import apiClient from '@/services/axiosSetup';
|
||||||
|
|
||||||
const username = ref('');
|
const username = ref('');
|
||||||
const password = ref('');
|
const password = ref('');
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const route = useRoute()
|
const route = useRoute();
|
||||||
console.log(route.query['back'])
|
|
||||||
|
|
||||||
|
// Получение tg_id
|
||||||
const tg_id = computed(() => {
|
const tg_id = computed(() => {
|
||||||
if (window.Telegram.WebApp) {
|
if (window.Telegram?.WebApp) {
|
||||||
const tg = window.Telegram.WebApp;
|
const tg = window.Telegram.WebApp;
|
||||||
tg.expand(); // Разворачиваем веб-приложение на весь экран
|
tg.expand(); // Разворачиваем приложение на весь экран
|
||||||
|
return tg.initDataUnsafe.user?.id ?? nul; // Если tg_id нет, возвращаем null
|
||||||
// Получаем информацию о пользователе и выводим её
|
|
||||||
return tg.initDataUnsafe.user.id
|
|
||||||
}
|
}
|
||||||
else return 567047
|
return null;
|
||||||
})
|
});
|
||||||
|
|
||||||
const login = async () => {
|
// Функция для автоматического входа по tg_id
|
||||||
|
const autoLoginWithTgId = async () => {
|
||||||
|
if (tg_id.value) {
|
||||||
try {
|
try {
|
||||||
let response: string
|
const response = await apiClient.post('/auth/token/tg?tg_id=' + tg_id.value );
|
||||||
if (tg_id.id){
|
|
||||||
response = await apiClient.post('/auth/token/tg', qs.stringify({ tg_id: tg_id.value }));
|
|
||||||
} else {
|
|
||||||
response = await apiClient.post('/auth/token', qs.stringify({ username: username.value, password: password.value }));
|
|
||||||
}
|
|
||||||
const token = response.data.access_token;
|
const token = response.data.access_token;
|
||||||
localStorage.setItem('token', token);
|
localStorage.setItem('token', token);
|
||||||
apiClient.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
apiClient.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
||||||
await router.push(route.query['back']? route.query['back'] : '/');
|
await router.push(route.query['back'] ? route.query['back'].toString() : '/');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
console.error(error);
|
||||||
|
alert('Ошибка входа. Проверьте логин и пароль.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Вызов autoLoginWithTgId при загрузке компонента
|
||||||
|
onMounted(() => {
|
||||||
|
autoLoginWithTgId();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Основная функция для логина
|
||||||
|
const login = async () => {
|
||||||
|
try {
|
||||||
|
let response;
|
||||||
|
if (tg_id.value) {
|
||||||
|
response = await apiClient.post('/auth/token/tg', qs.stringify({ tg_id: tg_id.value }));
|
||||||
|
} else {
|
||||||
|
response = await apiClient.post('/auth/token', qs.stringify({
|
||||||
|
username: username.value,
|
||||||
|
password: password.value,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
const token = response.data.access_token;
|
||||||
|
localStorage.setItem('token', token);
|
||||||
|
apiClient.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
||||||
|
await router.push(route.query['back'] ? route.query['back'].toString() : '/');
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
alert('Ошибка входа. Проверьте логин и пароль.');
|
alert('Ошибка входа. Проверьте логин и пароль.');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user