mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 03:15:35 -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
|
||||
|
||||
import de.bixilon.minosoft.Minosoft
|
||||
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.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.concurrent.Worker
|
||||
import javafx.fxml.FXML
|
||||
@ -25,6 +30,7 @@ import javafx.scene.web.WebView
|
||||
import javafx.stage.Modality
|
||||
import java.net.CookieHandler
|
||||
import java.net.CookieManager
|
||||
import java.net.URL
|
||||
|
||||
|
||||
class MicrosoftAddController(
|
||||
@ -50,9 +56,24 @@ class MicrosoftAddController(
|
||||
webView.engine.loadContent("Loading...")
|
||||
webView.engine.loadWorker.stateProperty().addListener { _, _, new ->
|
||||
if (new == Worker.State.SUCCEEDED) {
|
||||
if (webView.engine.location.startsWith("ms-xal-" + ProtocolDefinition.MICROSOFT_ACCOUNT_APPLICATION_ID)) {
|
||||
// login is being handled by MicrosoftOAuthUtils. We can go now...
|
||||
stage.scene.window.hide()
|
||||
val location = webView.engine.location
|
||||
if (!location.startsWith("ms-xal-" + ProtocolDefinition.MICROSOFT_ACCOUNT_APPLICATION_ID)) {
|
||||
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
|
||||
|
||||
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.util.KUtil.asList
|
||||
import de.bixilon.minosoft.util.KUtil.asUUID
|
||||
import de.bixilon.minosoft.util.KUtil.toLong
|
||||
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.postJson
|
||||
import de.bixilon.minosoft.util.logging.Log
|
||||
@ -136,12 +134,6 @@ object MicrosoftOAuthUtils {
|
||||
private object LoginURLHandler : URLStreamHandler() {
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user