From 9f4a3cf8a8cf4d7559185be6c7764cf4d6f0fbf3 Mon Sep 17 00:00:00 2001 From: Glavo Date: Sun, 19 Jun 2022 18:48:10 +0800 Subject: [PATCH] Disable Microsoft login when auth id is empty --- .../hmcl/ui/account/CreateAccountPane.java | 69 +++++++++++-------- .../resources/assets/lang/I18N.properties | 2 +- .../resources/assets/lang/I18N_zh.properties | 2 +- .../assets/lang/I18N_zh_CN.properties | 2 +- 4 files changed, 42 insertions(+), 33 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/CreateAccountPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/CreateAccountPane.java index 21b34bd8c..d909c071c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/CreateAccountPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/CreateAccountPane.java @@ -267,40 +267,49 @@ public class CreateAccountPane extends JFXDialogLayout implements DialogAware { } if (factory == Accounts.FACTORY_MICROSOFT) { VBox vbox = new VBox(8); - HintPane hintPane = new HintPane(MessageDialogPane.MessageType.INFO); - FXUtils.onChangeAndOperate(deviceCode, deviceCode -> { - if (deviceCode != null) { - FXUtils.copyText(deviceCode.getUserCode()); - hintPane.setSegment(i18n("account.methods.microsoft.manual", deviceCode.getUserCode(), deviceCode.getVerificationUri())); - } else { - hintPane.setSegment(i18n("account.methods.microsoft.hint")); - } - }); - hintPane.setOnMouseClicked(e -> { - if (deviceCode.get() != null) { - FXUtils.copyText(deviceCode.get().getUserCode()); - } - }); + if (!Accounts.OAUTH_CALLBACK.getClientId().isEmpty()) { + HintPane hintPane = new HintPane(MessageDialogPane.MessageType.INFO); + FXUtils.onChangeAndOperate(deviceCode, deviceCode -> { + if (deviceCode != null) { + FXUtils.copyText(deviceCode.getUserCode()); + hintPane.setSegment(i18n("account.methods.microsoft.manual", deviceCode.getUserCode(), deviceCode.getVerificationUri())); + } else { + hintPane.setSegment(i18n("account.methods.microsoft.hint")); + } + }); + hintPane.setOnMouseClicked(e -> { + if (deviceCode.get() != null) { + FXUtils.copyText(deviceCode.get().getUserCode()); + } + }); - holder.add(Accounts.OAUTH_CALLBACK.onGrantDeviceCode.registerWeak(value -> { - runInFX(() -> deviceCode.set(value)); - })); - HBox box = new HBox(8); - JFXHyperlink birthLink = new JFXHyperlink(i18n("account.methods.microsoft.birth")); - birthLink.setOnAction(e -> FXUtils.openLink("https://support.microsoft.com/account-billing/837badbc-999e-54d2-2617-d19206b9540a")); - JFXHyperlink profileLink = new JFXHyperlink(i18n("account.methods.microsoft.profile")); - profileLink.setOnAction(e -> FXUtils.openLink("https://account.live.com/editprof.aspx")); - JFXHyperlink purchaseLink = new JFXHyperlink(i18n("account.methods.yggdrasil.purchase")); - JFXHyperlink deauthorizeLink = new JFXHyperlink(i18n("account.methods.microsoft.deauthorize")); - deauthorizeLink.setOnAction(e -> FXUtils.openLink("https://account.live.com/consent/Edit?client_id=000000004C794E0A")); - purchaseLink.setOnAction(e -> FXUtils.openLink(YggdrasilService.PURCHASE_URL)); - box.getChildren().setAll(profileLink, birthLink, purchaseLink, deauthorizeLink); - GridPane.setColumnSpan(box, 2); + holder.add(Accounts.OAUTH_CALLBACK.onGrantDeviceCode.registerWeak(value -> { + runInFX(() -> deviceCode.set(value)); + })); + HBox box = new HBox(8); + JFXHyperlink birthLink = new JFXHyperlink(i18n("account.methods.microsoft.birth")); + birthLink.setOnAction(e -> FXUtils.openLink("https://support.microsoft.com/account-billing/837badbc-999e-54d2-2617-d19206b9540a")); + JFXHyperlink profileLink = new JFXHyperlink(i18n("account.methods.microsoft.profile")); + profileLink.setOnAction(e -> FXUtils.openLink("https://account.live.com/editprof.aspx")); + JFXHyperlink purchaseLink = new JFXHyperlink(i18n("account.methods.yggdrasil.purchase")); + JFXHyperlink deauthorizeLink = new JFXHyperlink(i18n("account.methods.microsoft.deauthorize")); + deauthorizeLink.setOnAction(e -> FXUtils.openLink("https://account.live.com/consent/Edit?client_id=000000004C794E0A")); + purchaseLink.setOnAction(e -> FXUtils.openLink(YggdrasilService.PURCHASE_URL)); + box.getChildren().setAll(profileLink, birthLink, purchaseLink, deauthorizeLink); + GridPane.setColumnSpan(box, 2); - vbox.getChildren().setAll(hintPane, box); + vbox.getChildren().setAll(hintPane, box); + + btnAccept.setDisable(false); + } else { + HintPane hintPane = new HintPane(MessageDialogPane.MessageType.WARNING); + hintPane.setText(i18n("account.methods.microsoft.snapshot")); + + vbox.getChildren().setAll(hintPane); + btnAccept.setDisable(true); + } detailsPane = vbox; - btnAccept.setDisable(false); } else if (factory == Accounts.FACTORY_MOJANG) { VBox vbox = new VBox(8); HintPane hintPane = new HintPane(MessageDialogPane.MessageType.WARNING); diff --git a/HMCL/src/main/resources/assets/lang/I18N.properties b/HMCL/src/main/resources/assets/lang/I18N.properties index e2ef1a0b4..c5a7dbdde 100644 --- a/HMCL/src/main/resources/assets/lang/I18N.properties +++ b/HMCL/src/main/resources/assets/lang/I18N.properties @@ -110,7 +110,7 @@ account.methods.microsoft.manual=Your device code is %1$s, please click h \n\ If the token used to log in to the Microsoft account is leaked, you can click on "Unauthorize the account" to deauthorize it. account.methods.microsoft.profile=Account Profile -account.methods.microsoft.snapshot=HMCL Snapshot version does not support Microsoft login. +account.methods.microsoft.snapshot=HMCL Snapshot version does not support Microsoft login, please use the stable version or beta version to log in. account.methods.microsoft.waiting_browser=Waiting for login to complete in the opened window... account.methods.offline=Offline account.methods.offline.uuid=UUID diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh.properties b/HMCL/src/main/resources/assets/lang/I18N_zh.properties index 5cf7f8037..aa4f23fba 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh.properties @@ -102,7 +102,7 @@ account.methods.microsoft.logging_in=登入中... account.methods.microsoft.hint=你需要按照以下步驟添加:\n1.點擊“登入”按鈕\n2.在網頁瀏覽器顯示的網站中輸入 HMCL 顯示的代碼(自動拷貝,直接粘貼即可),並點擊“下一步”\n3.按照網站的提示登入\n4.當網站顯示“ 是否允許此應用訪問你的信息?”的標識時,請點擊“是”\n5.當網站提示“大功告成”的標示時,及表示登入成功!然後等待賬戶完成添加即可!\n-若網站提示“出现错误”的標識,請嘗試重新按照以上步驟登入\n-若賬戶添加失敗,請嘗試重新按照以上步驟登入\n-若設備網絡環境不佳,可能登陸網站加載很慢甚至無法加載,此時請使用 VPN 或代理伺服器並重試\n-若登入微軟賬號的 Token 洩露,可點擊下方“解除帳戶授權”解除登入授權,然後等待 Token 過期 account.methods.microsoft.manual=你需要按照以下步驟添加:\n1.點擊“登入”按鈕\n2.在網頁瀏覽器顯示的網站中輸入該代碼:%1$s(已自動拷貝,請點此再次拷貝),並點擊“下一步”\n3.按照網站的提示登入\n4.當網站顯示“ 是否允許此應用訪問你的信息?”的標識時,請點擊“是”\n5.當網站提示“大功告成”的標示時,及表示登入成功!然後等待賬戶完成添加即可\n-若網站提示“出现错误”的標識,請嘗試重新按照以上步驟登入\n-若賬戶添加失敗,請嘗試重新按照以上步驟登入\n-若網站未能打開,請手動在網頁瀏覽器中打開:%2$s\n-若設備網絡環境不佳,可能登陸網站加載很慢甚至無法加載,此時請使用 VPN 或代理伺服器並重試\n-若登入微軟賬號的 Token 洩露,可點擊下方“解除帳戶授權”解除登入授權,然後等待 Token 過期 account.methods.microsoft.profile=帳戶設置頁 -account.methods.microsoft.snapshot=HMCL 快照版不支持微软登录 +account.methods.microsoft.snapshot=HMCL 快照版暫不提供微軟登入支持,請使用穩定版或測試版進行登入。 account.methods.microsoft.waiting_browser=等待在新打開的瀏覽器窗口中完成登入... account.methods.offline=離線模式 account.methods.offline.uuid=UUID diff --git a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties index cfc30f179..c27050580 100644 --- a/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties +++ b/HMCL/src/main/resources/assets/lang/I18N_zh_CN.properties @@ -102,7 +102,7 @@ account.methods.microsoft.logging_in=登录中…… account.methods.microsoft.hint=你需要按照以下步骤添加:\n1.点击“登录”按钮\n2.在网页浏览器显示的网站中输入 HMCL 显示的代码(自动拷贝,直接粘贴即可),并点击“下一步”\n3.按照网站的提示登录\n4.当网站提示“是否允许此应用访问你的信息?”的标识时,请点击“是”\n5.当网站提示“大功告成”的标识时,及表示登录成功!然后等待账户完成添加即可!\n-若网站提示“出现错误”的标识时,请重新按照以上步骤重新添加\n-若账户添加失败,请重新按照以上步骤重新添加\n-若设备网络环境不佳,可能登录网站加载很慢甚至无法加载,此时请使用 VPN 或代理服务器并重试\n-若登录微软账户的 Token (不是密码)泄露,可点击下方“解除账户绑定”解除登录授权,然后等待 Token 过期 account.methods.microsoft.manual=你需要按照以下步骤添加:\n1.点击“登录”按钮\n2.在网页浏览器显示的网站中输入:%1$s(已自动拷贝,点此再次拷贝),并点击“下一步”\n3.按照网站的提示登录\n4.当网站提示“是否允许此应用访问你的信息?”的标识时,请点击“是”\n5.当网站提示“大功告成”的标识时,及表示登录成功!然后等待账户完成添加即可\n-若网站提示“出现错误”的标识时,请重新按照以上步骤重新添加\n-若账户添加失败,请重新按照以上步骤重新添加\n-若网站未能显示,请手动在网页浏览器中打开:%2$s\n-若设备网络环境不佳,可能登录网站加载很慢甚至无法加载,此时请使用 VPN 或代理服务器并重试\n-若登录微软账户的 Token (不是密码)泄露,可点击下方“解除账户绑定”解除登录授权,然后等待 Token 过期 account.methods.microsoft.profile=帐户设置页 -account.methods.microsoft.snapshot=HMCL 快照版不支持微软登录 +account.methods.microsoft.snapshot=HMCL 快照版暂不提供微软登录支持,请使用稳定版或测试版进行登录。 account.methods.microsoft.waiting_browser=等待在新打开的浏览器窗口中完成登录…… account.methods.offline=离线模式 account.methods.offline.uuid=UUID