feat: your authorization

This commit is contained in:
2025-07-18 00:51:08 +05:00
parent 591e354dcb
commit 7938555c91
3 changed files with 34 additions and 22 deletions

View File

@ -2,7 +2,7 @@ import { YggdrasilClient, YggrasilAuthentication } from '@xmcl/user';
import { v4 as uuidv4 } from 'uuid';
// Ely.by сервер
const ELY_BY_AUTH_SERVER = 'https://authserver.ely.by';
const ELY_BY_AUTH_SERVER = 'http://127.0.0.1:8000';
export class AuthService {
private client: YggdrasilClient;
@ -49,6 +49,7 @@ export class AuthService {
async validate(accessToken: string, clientToken: string): Promise<boolean> {
try {
console.log(accessToken, clientToken);
const response = await fetch(`${ELY_BY_AUTH_SERVER}/auth/validate`, {
method: 'POST',
headers: {

View File

@ -479,7 +479,7 @@ export function initMinecraftHandlers() {
username,
memory = 4096,
baseVersion = '1.21.4',
fabricVersion = 'fabric0.16.14',
fabricVersion = '0.16.14',
packName = 'Comfort', // Название основной сборки
versionToLaunchOverride = '', // Возможность переопределить версию для запуска
serverIp = 'popa-popa.ru',
@ -499,6 +499,8 @@ export function initMinecraftHandlers() {
// Найти версию пакета, Fabric или базовую версию
let versionToLaunch = versionToLaunchOverride;
console.log('fabric:', `${baseVersion}-fabric${fabricVersion}`);
if (!versionToLaunch) {
if (
versionsContents.includes(`${baseVersion}-fabric${fabricVersion}`)
@ -598,6 +600,11 @@ export function initMinecraftHandlers() {
}
// 2. Устанавливаем Fabric
console.log('Попытка установки Fabric:', {
minecraftVersion: baseVersion,
fabricVersion: fabricVersion,
minecraftDir: minecraftDir,
});
try {
event.sender.send('installation-status', {
step: 'fabric-list',
@ -733,8 +740,13 @@ export function initMinecraftHandlers() {
server: serverConfig, // Используем созданный объект конфигурации
extraJVMArgs: [
'-Dlog4j2.formatMsgNoLookups=true',
`-javaagent:${authlibPath}=ely.by`,
`-javaagent:${authlibPath}=http://147.78.65.214:8000`,
`-Xmx${memory}M`,
'-Dauthlibinjector.skinWhitelist=127.0.0.1,falrfg-213-87-196-173.ru.tuna.am',
'-Dauthlibinjector.debug=verbose,authlib',
'-Dauthlibinjector.legacySkinPolyfill=enabled',
'-Dauthlibinjector.mojangAntiFeatures=disabled',
'-Dcom.mojang.authlib.disableSecureProfileEndpoints=true',
],
// Используем данные аутентификации Yggdrasil
accessToken,
@ -924,22 +936,18 @@ export function initAuthHandlers() {
});
// Валидация токена
ipcMain.handle('validate-token', async (event, accessToken) => {
try {
const clientToken = JSON.parse(
fs.readFileSync(
path.join(app.getPath('userData'), 'config.json'),
'utf8',
),
).clientToken;
const valid = await authService.validate(accessToken, clientToken);
return { valid };
} catch (error) {
console.error('Ошибка валидации токена:', error);
return { valid: false };
}
});
ipcMain.handle(
'validate-token',
async (event, { accessToken, clientToken }) => {
try {
const valid = await authService.validate(accessToken, clientToken);
return { valid };
} catch (error) {
console.error('Ошибка валидации токена:', error);
return { valid: false };
}
},
);
// Обновление токена
ipcMain.handle(

View File

@ -26,7 +26,10 @@ const AuthCheck = ({ children }: { children: ReactNode }) => {
const config = JSON.parse(savedConfig);
if (config.accessToken) {
// Можно добавить дополнительную проверку токена
const isValid = await validateToken(config.accessToken);
const isValid = await validateToken(
config.accessToken,
config.clientToken,
);
setIsAuthenticated(isValid);
return;
}
@ -41,12 +44,12 @@ const AuthCheck = ({ children }: { children: ReactNode }) => {
checkAuth();
}, []);
const validateToken = async (token: string) => {
const validateToken = async (accessToken: string, clientToken: string) => {
try {
// Используем IPC для валидации токена через main процесс
const result = await window.electron.ipcRenderer.invoke(
'validate-token',
token,
{ accessToken, clientToken },
);
// Если токен недействителен, очищаем сохраненные данные в localStorage