Тестовый коммит после удаления husky

This commit is contained in:
2025-03-05 01:02:09 +03:00
parent 97ca5e4b64
commit 3157ad0cd9
118 changed files with 8177 additions and 8530 deletions

View File

@@ -1,106 +0,0 @@
import axios from 'axios';
import { ethers } from 'ethers';
import { useAuthStore } from '../stores/auth';
export async function connectWallet(onError) {
const auth = useAuthStore();
try {
console.log('Начинаем подключение кошелька...');
// Закомментируйте получение CSRF-токена
// const csrfResponse = await axios.get('/api/csrf-token');
// const csrfToken = csrfResponse.data.csrfToken;
// Проверяем, доступен ли MetaMask
if (typeof window.ethereum === 'undefined') {
console.error('MetaMask не установлен');
if (onError) onError('Пожалуйста, установите MetaMask для подключения кошелька.');
return;
}
console.log('MetaMask доступен, запрашиваем аккаунты...');
// Создаем провайдер и получаем подписчика
const provider = new ethers.BrowserProvider(window.ethereum);
// Запрашиваем доступ к аккаунтам
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
if (!accounts || accounts.length === 0) {
throw new Error('No accounts found');
}
const address = accounts[0];
const signer = await provider.getSigner();
try {
// Получаем nonce для подписи без CSRF-токена
const nonceResponse = await axios.get(`/api/auth/nonce?address=${address}`, {
withCredentials: true
// Удалите или закомментируйте заголовки CSRF
// headers: {
// 'CSRF-Token': csrfToken
// }
});
const { message } = nonceResponse.data;
// Запрашиваем подпись сообщения
const signature = await signer.signMessage(message);
// Верифицируем подпись на сервере без CSRF-токена
const verifyResponse = await axios.post('/api/auth/verify', {
address,
signature
}, {
withCredentials: true
// Удалите или закомментируйте заголовки CSRF
// headers: {
// 'CSRF-Token': csrfToken
// }
});
// Если верификация успешна, устанавливаем состояние аутентификации
if (verifyResponse.data.authenticated) {
auth.setAuth({
address,
isAdmin: verifyResponse.data.isAdmin,
authType: 'wallet'
});
// Перезагружаем страницу для обновления интерфейса
window.location.reload();
}
} catch (error) {
console.log('Server error:', error);
// Временное решение для обхода ошибки сервера
auth.setAuth({
address,
isAdmin: address.toLowerCase() === '0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b'.toLowerCase(),
authType: 'wallet'
});
// Перезагружаем страницу для обновления интерфейса
window.location.reload();
}
} catch (error) {
console.error('Ошибка при подключении кошелька:', error);
// Более подробная обработка ошибок
let errorMessage = 'Ошибка при подключении кошелька';
if (error.response) {
// Ошибка от сервера
const serverError = error.response.data.error || error.response.data.message;
errorMessage = `Ошибка сервера: ${serverError}`;
} else if (error.message.includes('user rejected')) {
errorMessage = 'Вы отклонили запрос на подпись сообщения';
} else if (error.message.includes('already processing')) {
errorMessage = 'Уже обрабатывается запрос. Пожалуйста, подождите';
} else if (error.message.includes('No accounts found')) {
errorMessage = 'Не найдены аккаунты. Пожалуйста, разблокируйте MetaMask';
}
if (onError) onError(errorMessage);
}
}