Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import React, { useEffect, useState } from 'react';
- import axios from 'axios';
- import { useNavigate } from 'react-router-dom';
- import './Main.css';
- const Login = () => {
- const navigate = useNavigate();
- const [loading, setLoading] = useState(true);
- useEffect(() => {
- if (window.Telegram && window.Telegram.WebApp) {
- window.Telegram.WebApp.ready();
- const initData = window.Telegram.WebApp.initDataUnsafe;
- if (!initData || !initData.user) {
- alert('Не удалось получить данные пользователя. Убедитесь, что вы используете веб-приложение в Telegram.');
- setLoading(false);
- return;
- }
- const telegramId = initData.user.id;
- console.log('Полученный telegram_id (КЛИЕНТ):', telegramId);
- if (!telegramId) {
- alert('Не удалось получить telegram_id. Пожалуйста, попробуйте еще раз.');
- setLoading(false);
- return;
- }
- const authenticateUser = async () => {
- try {
- const response = await axios.post(`${process.env.REACT_APP_API_URL}/api/telegram-login`, {
- telegram_id: telegramId,
- });
- const { full_name, user_id, user_status } = response.data;
- if (user_status === 'Заблокирован') {
- alert('Вы заблокированы. Обратитесь к администратору.');
- setLoading(false);
- return;
- }
- const rolesResponse = await axios.get(`${process.env.REACT_APP_API_URL}/api/users/${user_id}/role`);
- const tasksResponse = await axios.get(`${process.env.REACT_APP_API_URL}/api/tasks?role=${rolesResponse.data.role}&creator=${encodeURIComponent(full_name)}`);
- localStorage.setItem('user', JSON.stringify({ fullName: full_name, userId: user_id, userStatus: user_status, role: rolesResponse.data.role, tasks: tasksResponse.data }));
- navigate('/main');
- } catch (error) {
- console.error('Ошибка авторизации:', error);
- alert('Ошибка авторизации: ' + (error.response?.data?.error || 'Неизвестная ошибка'));
- } finally {
- setLoading(false);
- }
- };
- authenticateUser();
- } else {
- alert('Не удалось инициализировать Telegram Web App. Попробуйте еще раз.');
- setLoading(false);
- }
- }, [navigate]);
- return (
- <div className="form-container">
- <h2>Авторизация через Telegram...</h2>
- </div>
- );
- };
- export default Login;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement