diff --git a/pom.xml b/pom.xml index e22c12053..eb51c66b6 100644 --- a/pom.xml +++ b/pom.xml @@ -298,12 +298,6 @@ ${javafx.version} pom - - org.openjfx - javafx-web - ${javafx.version} - pom - org.xeustechnologies jcl-core diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/account/add/MicrosoftAddController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/account/add/MicrosoftAddController.kt index b7a1e41f1..85c2018b6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/account/add/MicrosoftAddController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/account/add/MicrosoftAddController.kt @@ -13,29 +13,24 @@ package de.bixilon.minosoft.gui.eros.main.account.add -import de.bixilon.kutil.concurrent.pool.DefaultThreadPool -import de.bixilon.kutil.http.QueryUtil.fromQuery import de.bixilon.minosoft.config.profile.profiles.eros.ErosProfileManager import de.bixilon.minosoft.data.accounts.types.microsoft.MicrosoftAccount import de.bixilon.minosoft.gui.eros.controller.JavaFXWindowController -import de.bixilon.minosoft.gui.eros.dialog.ErosErrorReport.Companion.report import de.bixilon.minosoft.gui.eros.main.account.AccountController import de.bixilon.minosoft.gui.eros.util.JavaFXUtil -import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.util.KUtil.toResourceLocation -import de.bixilon.minosoft.util.account.microsoft.MicrosoftOAuthUtils -import javafx.concurrent.Worker import javafx.fxml.FXML -import javafx.scene.web.WebView +import javafx.scene.control.TextField +import javafx.scene.text.TextFlow import javafx.stage.Modality -import java.net.URL class MicrosoftAddController( private val accountController: AccountController, private val account: MicrosoftAccount? = null, ) : JavaFXWindowController() { - @FXML private lateinit var webView: WebView + @FXML private lateinit var textFX: TextFlow + @FXML private lateinit var codeFX: TextField fun show() { @@ -49,44 +44,10 @@ class MicrosoftAddController( super.init() val profile = ErosProfileManager.selected.general.accountProfile - JavaFXUtil.resetWebView() - webView.engine.isJavaScriptEnabled = true - webView.isContextMenuEnabled = false - webView.engine.loadContent("Loading...") - webView.engine.loadWorker.stateProperty().addListener { _, _, new -> - if (new == Worker.State.SUCCEEDED) { - val location = webView.engine.location - if (!location.startsWith("ms-xal-" + ProtocolDefinition.MICROSOFT_ACCOUNT_APPLICATION_ID)) { - return@addListener - } - JavaFXUtil.resetWebView() - - DefaultThreadPool += { - try { - // ms-xal-00000000402b5328://auth/?code=M.R3_BL2.9c86df10-b29b-480d-9094-d8accb31e4a5 - val account = MicrosoftOAuthUtils.loginToMicrosoftAccount(URL(location).query.fromQuery()["code"]!!) - profile.entries[account.id] = account - profile.selected = account - JavaFXUtil.runLater { accountController.refreshList() } - } catch (exception: Exception) { - exception.printStackTrace() - exception.report() - } - - JavaFXUtil.runLater { stage.scene.window.hide() } - } - } - } - requestOauthFlowToken() - } - - private fun requestOauthFlowToken() { - webView.engine.load(ProtocolDefinition.MICROSOFT_ACCOUNT_OAUTH_FLOW_URL) } companion object { private val LAYOUT = "minosoft:eros/main/account/add/microsoft.fxml".toResourceLocation() - private val TITLE = "minosoft:main.account.add.microsoft.title".toResourceLocation() } } diff --git a/src/main/java/de/bixilon/minosoft/util/account/microsoft/MicrosoftOAuthUtils.kt b/src/main/java/de/bixilon/minosoft/util/account/microsoft/MicrosoftOAuthUtils.kt index f7b2221ac..639a089cc 100644 --- a/src/main/java/de/bixilon/minosoft/util/account/microsoft/MicrosoftOAuthUtils.kt +++ b/src/main/java/de/bixilon/minosoft/util/account/microsoft/MicrosoftOAuthUtils.kt @@ -90,10 +90,11 @@ object MicrosoftOAuthUtils { "TokenType" to "JWT", ).postJson(ProtocolDefinition.MICROSOFT_ACCOUNT_XBOX_LIVE_AUTHENTICATE_URL) - response.body!! - if (response.statusCode != 200) { + + if (response.statusCode != 200 || response.body == null) { throw LoginException(response.statusCode, "Could not authenticate with xbox live token", response.body.toString()) } + return Pair(response.body["Token"].unsafeCast(), response.body["DisplayClaims"].asJsonObject()["xui"].asJsonList()[0].asJsonObject()["uhs"].unsafeCast()) } diff --git a/src/main/resources/assets/minosoft/eros/main/account/add/microsoft.fxml b/src/main/resources/assets/minosoft/eros/main/account/add/microsoft.fxml index 93f642b6d..f36874179 100644 --- a/src/main/resources/assets/minosoft/eros/main/account/add/microsoft.fxml +++ b/src/main/resources/assets/minosoft/eros/main/account/add/microsoft.fxml @@ -1,6 +1,5 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + +