From acd46bb31cc878e59862797c60f52f145aa5e91a Mon Sep 17 00:00:00 2001 From: DIKER0K Date: Sat, 20 Dec 2025 17:45:16 +0500 Subject: [PATCH] fix qr code auth --- src/renderer/hooks/useAuth.ts | 37 +++++++++++++++++++---------------- src/renderer/pages/Login.tsx | 8 +++++--- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/renderer/hooks/useAuth.ts b/src/renderer/hooks/useAuth.ts index a763562..086fb3e 100644 --- a/src/renderer/hooks/useAuth.ts +++ b/src/renderer/hooks/useAuth.ts @@ -22,23 +22,7 @@ export default function useAuth() { // Прямой HTTP-запрос к вашему серверу const session = await authenticate(username, password); - - // Сохраняем в конфигурацию - saveConfigFunc({ - username: session.selectedProfile.name, - uuid: session.selectedProfile.id, - accessToken: session.accessToken, - clientToken: session.clientToken, - memory: 4096, - }); - - // Уведомляем Electron (для запуска Minecraft) - await window.electron.ipcRenderer.invoke('auth-changed', { - isAuthed: true, - minecraftSession: session, // Передаём всю сессию - }); - - setStatus('authenticating'); + await applySession(session, saveConfigFunc); return session; } catch (error) { console.error('Ошибка при аутентификации:', error); @@ -47,6 +31,24 @@ export default function useAuth() { } }; + const applySession = async ( + session: AuthSession, + saveConfigFunc: (config: any) => void, + ) => { + saveConfigFunc({ + username: session.selectedProfile.name, + uuid: session.selectedProfile.id, + accessToken: session.accessToken, + clientToken: session.clientToken, + memory: 4096, + }); + + await window.electron.ipcRenderer.invoke('auth-changed', { + isAuthed: true, + minecraftSession: session, + }); + }; + // Валидация токена (HTTP напрямую) const validateSession = async (accessToken: string): Promise => { try { @@ -95,5 +97,6 @@ export default function useAuth() { authenticateUser, validateSession, refreshSession, + applySession, }; } diff --git a/src/renderer/pages/Login.tsx b/src/renderer/pages/Login.tsx index 841551c..da649ba 100644 --- a/src/renderer/pages/Login.tsx +++ b/src/renderer/pages/Login.tsx @@ -159,11 +159,13 @@ const Login = ({ onLoginSuccess }: LoginProps) => { if (res.status === 'ok') { stopQrPolling(); - saveConfig({ + const session = { accessToken: res.accessToken, clientToken: res.clientToken, - username: res.selectedProfile?.name ?? config.username, - }); + selectedProfile: res.selectedProfile, + }; + + await auth.applySession(session as any, saveConfig); if (onLoginSuccess) { onLoginSuccess(res.selectedProfile?.name ?? config.username);