mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-19 04:15:14 -04:00
improve microsoft webview login
This commit is contained in:
parent
906c2cfeaa
commit
04deee09e3
@ -13,11 +13,16 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.gui.eros.main.account.add
|
package de.bixilon.minosoft.gui.eros.main.account.add
|
||||||
|
|
||||||
|
import de.bixilon.minosoft.Minosoft
|
||||||
import de.bixilon.minosoft.gui.eros.controller.JavaFXWindowController
|
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.main.account.AccountController
|
||||||
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
|
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
import de.bixilon.minosoft.util.KUtil.asResourceLocation
|
import de.bixilon.minosoft.util.KUtil.asResourceLocation
|
||||||
|
import de.bixilon.minosoft.util.Util
|
||||||
|
import de.bixilon.minosoft.util.account.microsoft.MicrosoftOAuthUtils
|
||||||
|
import de.bixilon.minosoft.util.task.pool.DefaultThreadPool
|
||||||
import javafx.application.Platform
|
import javafx.application.Platform
|
||||||
import javafx.concurrent.Worker
|
import javafx.concurrent.Worker
|
||||||
import javafx.fxml.FXML
|
import javafx.fxml.FXML
|
||||||
@ -25,6 +30,7 @@ import javafx.scene.web.WebView
|
|||||||
import javafx.stage.Modality
|
import javafx.stage.Modality
|
||||||
import java.net.CookieHandler
|
import java.net.CookieHandler
|
||||||
import java.net.CookieManager
|
import java.net.CookieManager
|
||||||
|
import java.net.URL
|
||||||
|
|
||||||
|
|
||||||
class MicrosoftAddController(
|
class MicrosoftAddController(
|
||||||
@ -50,9 +56,24 @@ class MicrosoftAddController(
|
|||||||
webView.engine.loadContent("Loading...")
|
webView.engine.loadContent("Loading...")
|
||||||
webView.engine.loadWorker.stateProperty().addListener { _, _, new ->
|
webView.engine.loadWorker.stateProperty().addListener { _, _, new ->
|
||||||
if (new == Worker.State.SUCCEEDED) {
|
if (new == Worker.State.SUCCEEDED) {
|
||||||
if (webView.engine.location.startsWith("ms-xal-" + ProtocolDefinition.MICROSOFT_ACCOUNT_APPLICATION_ID)) {
|
val location = webView.engine.location
|
||||||
// login is being handled by MicrosoftOAuthUtils. We can go now...
|
if (!location.startsWith("ms-xal-" + ProtocolDefinition.MICROSOFT_ACCOUNT_APPLICATION_ID)) {
|
||||||
stage.scene.window.hide()
|
return@addListener
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultThreadPool += {
|
||||||
|
try {
|
||||||
|
// ms-xal-00000000402b5328://auth/?code=M.R3_BL2.9c86df10-b29b-480d-9094-d8accb31e4a5
|
||||||
|
val account = MicrosoftOAuthUtils.loginToMicrosoftAccount(Util.urlQueryToMap(URL(location).query)["code"]!!)
|
||||||
|
Minosoft.config.config.account.entries[account.id] = account
|
||||||
|
Minosoft.config.saveToFile()
|
||||||
|
Platform.runLater { accountController.refreshList() }
|
||||||
|
} catch (exception: Exception) {
|
||||||
|
exception.printStackTrace()
|
||||||
|
exception.report()
|
||||||
|
}
|
||||||
|
|
||||||
|
Platform.runLater { stage.scene.window.hide() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,13 +14,11 @@
|
|||||||
package de.bixilon.minosoft.util.account.microsoft
|
package de.bixilon.minosoft.util.account.microsoft
|
||||||
|
|
||||||
import de.bixilon.minosoft.data.accounts.types.MicrosoftAccount
|
import de.bixilon.minosoft.data.accounts.types.MicrosoftAccount
|
||||||
import de.bixilon.minosoft.gui.eros.dialog.ErosErrorReport.Companion.report
|
|
||||||
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
|
||||||
import de.bixilon.minosoft.util.KUtil.asList
|
import de.bixilon.minosoft.util.KUtil.asList
|
||||||
import de.bixilon.minosoft.util.KUtil.asUUID
|
import de.bixilon.minosoft.util.KUtil.asUUID
|
||||||
import de.bixilon.minosoft.util.KUtil.toLong
|
import de.bixilon.minosoft.util.KUtil.toLong
|
||||||
import de.bixilon.minosoft.util.KUtil.unsafeCast
|
import de.bixilon.minosoft.util.KUtil.unsafeCast
|
||||||
import de.bixilon.minosoft.util.Util
|
|
||||||
import de.bixilon.minosoft.util.http.HTTP2.postData
|
import de.bixilon.minosoft.util.http.HTTP2.postData
|
||||||
import de.bixilon.minosoft.util.http.HTTP2.postJson
|
import de.bixilon.minosoft.util.http.HTTP2.postJson
|
||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
@ -136,12 +134,6 @@ object MicrosoftOAuthUtils {
|
|||||||
private object LoginURLHandler : URLStreamHandler() {
|
private object LoginURLHandler : URLStreamHandler() {
|
||||||
|
|
||||||
override fun openConnection(url: URL): URLConnection {
|
override fun openConnection(url: URL): URLConnection {
|
||||||
try {
|
|
||||||
loginToMicrosoftAccount(Util.urlQueryToMap(url.query)["code"]!!)
|
|
||||||
} catch (exception: Exception) {
|
|
||||||
exception.printStackTrace()
|
|
||||||
exception.report()
|
|
||||||
}
|
|
||||||
return URLProtocolStreamHandlers.NULL_URL_CONNECTION
|
return URLProtocolStreamHandlers.NULL_URL_CONNECTION
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user