120 lines
3.1 KiB
JavaScript
120 lines
3.1 KiB
JavaScript
/* eslint-disable no-unused-vars */
|
|
const { ipcRenderer } = require("electron");
|
|
const axios = require("axios").default;
|
|
const fs = require("fs");
|
|
const { PNG } = require("pngjs");
|
|
|
|
// Read auth data from storage and define variables
|
|
var authData = ipcRenderer.sendSync("getAuth");
|
|
var token;
|
|
var save = true;
|
|
|
|
// Set theme
|
|
document.body.classList.add(authData.theme);
|
|
|
|
// Function for easy switching between views
|
|
function setContent(id, message) {
|
|
document.querySelectorAll("div.content").forEach((element) => {
|
|
element.style.display = "none";
|
|
});
|
|
|
|
const element = document.querySelectorAll(`div.content#${id}`)[0];
|
|
|
|
if (message) {
|
|
var msg;
|
|
if (element.firstElementChild.classList.contains("message")) {
|
|
msg = element.firstElementChild;
|
|
} else {
|
|
msg = document.createElement("p");
|
|
}
|
|
msg.classList = `message ${message.type}`;
|
|
msg.innerHTML = message.text;
|
|
element.prepend(msg);
|
|
}
|
|
|
|
element.style.display = "block";
|
|
}
|
|
|
|
setContent("loader");
|
|
|
|
async function authenticate(user, password) {
|
|
var payload = {
|
|
"agent": {
|
|
"name": "Minecraft",
|
|
"version": 1
|
|
},
|
|
"username": user,
|
|
"password": password
|
|
};
|
|
|
|
axios({
|
|
method: "POST",
|
|
url: "https://authserver.mojang.com/authenticate",
|
|
data: payload,
|
|
}).then((data) => {
|
|
console.log("Login successfull");
|
|
token = data.data;
|
|
|
|
// Save username (& password) for future login
|
|
authData.user = user;
|
|
authData.password = (save) ? password : "";
|
|
|
|
if (ipcRenderer.sendSync("setAuth", authData)) {
|
|
setContent(
|
|
"mainMenu",
|
|
{
|
|
type: "success",
|
|
text: `Logged in as ${data.data.selectedProfile.name}`
|
|
}
|
|
);
|
|
}
|
|
}).catch((data) => {
|
|
console.log("Login failure");
|
|
console.log(data.response);
|
|
setContent(
|
|
"authForm",
|
|
{
|
|
type: "warning",
|
|
text: `Login failed<br>${data.response.data.errorMessage}`
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
// Get access token from Mojang Authserver
|
|
if (authData.password == "") {
|
|
// Display auth screen when no password data is found
|
|
const form = document.querySelectorAll("div.content#authForm")[0];
|
|
form.querySelectorAll("input#user")[0].value = authData.user;
|
|
setContent("authForm");
|
|
|
|
// Listen for form submit
|
|
form.addEventListener("submit", function(e) {
|
|
e.preventDefault();
|
|
authData.user = form.querySelectorAll("input#user")[0].value;
|
|
authData.password = form.querySelectorAll("input#password")[0].value;
|
|
save = form.querySelectorAll("input#save")[0].checked;
|
|
setContent("loader");
|
|
authenticate(authData.user, authData.password);
|
|
});
|
|
} else {
|
|
authenticate(authData.user, authData.password);
|
|
}
|
|
|
|
//fs.createReadStream("../data/in.png")
|
|
// .pipe(
|
|
// new PNG({
|
|
// filterType: 4,
|
|
// })
|
|
// )
|
|
// .on("parsed", (image) => {
|
|
// axios({
|
|
// method: "PUT",
|
|
// url: `https://api.mojang.com/user/profile/${data.data.selectedProfile.id}/skin`,
|
|
// data: {
|
|
// model: "",
|
|
// file: image
|
|
// },
|
|
// headers: {"Authorization": "Bearer " + data.data.accessToken}
|
|
// }).catch(console.log);
|
|
// });
|