auth
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<div class="flex items-center justify-center h-screen bg-gray-100">
|
||||
<div class="w-full max-w-sm p-6 bg-white rounded-lg shadow-md">
|
||||
<h2 class="text-2xl font-bold text-center mb-6">Вход</h2>
|
||||
{{tg_id}}
|
||||
{{ tg_id }}
|
||||
<form @submit.prevent="login">
|
||||
<div class="mb-4">
|
||||
<label class="block text-gray-700 text-sm font-bold mb-2" for="username">Логин</label>
|
||||
@@ -37,41 +37,65 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import qs from 'qs';
|
||||
import {computed, ref} from 'vue';
|
||||
import {useRoute, useRouter} from 'vue-router';
|
||||
import { computed, ref, onMounted } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import apiClient from '@/services/axiosSetup';
|
||||
|
||||
const username = ref('');
|
||||
const password = ref('');
|
||||
const router = useRouter();
|
||||
const route = useRoute()
|
||||
console.log(route.query['back'])
|
||||
const route = useRoute();
|
||||
|
||||
// Получение tg_id
|
||||
const tg_id = computed(() => {
|
||||
if (window.Telegram.WebApp) {
|
||||
if (window.Telegram?.WebApp) {
|
||||
const tg = window.Telegram.WebApp;
|
||||
tg.expand(); // Разворачиваем веб-приложение на весь экран
|
||||
|
||||
// Получаем информацию о пользователе и выводим её
|
||||
return tg.initDataUnsafe.user.id
|
||||
tg.expand(); // Разворачиваем приложение на весь экран
|
||||
return tg.initDataUnsafe.user?.id ?? nul; // Если tg_id нет, возвращаем null
|
||||
}
|
||||
else return 567047
|
||||
})
|
||||
return null;
|
||||
});
|
||||
|
||||
// Функция для автоматического входа по tg_id
|
||||
const autoLoginWithTgId = async () => {
|
||||
if (tg_id.value) {
|
||||
try {
|
||||
const response = await apiClient.post('/auth/token/tg?tg_id=' + tg_id.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('Ошибка входа. Проверьте логин и пароль.');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Вызов autoLoginWithTgId при загрузке компонента
|
||||
onMounted(() => {
|
||||
autoLoginWithTgId();
|
||||
});
|
||||
|
||||
// Основная функция для логина
|
||||
const login = async () => {
|
||||
try {
|
||||
let response: string
|
||||
if (tg_id.id){
|
||||
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 }));
|
||||
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'] : '/');
|
||||
await router.push(route.query['back'] ? route.query['back'].toString() : '/');
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
console.error(error);
|
||||
alert('Ошибка входа. Проверьте логин и пароль.');
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user