minecraft-core-master
Version:
Núcleo avanzado para launchers de Minecraft. Descarga, instala y ejecuta versiones de Minecraft, assets, librerías, Java y loaders de forma automática y eficiente.
65 lines (64 loc) • 2.61 kB
JavaScript
import path from 'path';
import { app, BrowserWindow, session } from "electron";
const defaultProperties = {
width: 1000,
height: 650,
resizable: false,
center: true,
icon: path.join(__dirname, '../../../resources/icons', `microsoft.${process.platform === 'win32' ? 'ico' : 'png'}`),
};
export default async function openMicrosoftWindow(url) {
await new Promise((resolve) => {
app.whenReady().then(() => {
session.defaultSession.cookies.get({ domain: 'live.com' }).then((cookies) => {
for (const cookie of cookies) {
const urlcookie = `http${cookie.secure ? 's' : ''}://${cookie.domain.replace(/^\./, '') + cookie.path}`;
session.defaultSession.cookies.remove(urlcookie, cookie.name);
}
});
resolve();
});
});
return new Promise((resolve) => {
app.whenReady().then(() => {
const mainWindow = new BrowserWindow(defaultProperties);
mainWindow.setMenu(null);
mainWindow.loadURL(url);
let loading = false;
mainWindow.webContents.setWindowOpenHandler(() => {
return { action: "deny" };
});
const allowedDomains = [
"https://login.live.com",
"https://login.microsoftonline.com",
"https://login.live-int.com",
"https://login.microsoft.com",
"https://login.live.com/oauth20_desktop.srf"
];
mainWindow.webContents.on("will-navigate", (event, navigationUrl) => {
if (!allowedDomains.some(domain => navigationUrl.startsWith(domain))) {
event.preventDefault();
console.log("Bloqueado:", navigationUrl);
}
});
mainWindow.on('close', () => {
if (!loading)
resolve(null);
});
mainWindow.webContents.on('did-finish-load', () => {
const loc = mainWindow.webContents.getURL();
if (loc.startsWith('https://login.live.com/oauth20_desktop.srf')) {
const code = new URLSearchParams(loc.split('?')[1]).get('code');
resolve(code ?? null);
loading = true;
try {
mainWindow.close();
}
catch {
console.error('Failed to close window!');
}
}
});
});
});
}