From 3df31a600bcfe0ac1b0144887bb0c6f93268fbd4 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 9 Oct 2025 14:45:47 +0200 Subject: [PATCH 1/2] wip Signed-off-by: tobiasKaminsky --- .../authentication/AuthenticatorActivity.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java b/app/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java index 14eb2eec5d38..0f7afeb7b84d 100644 --- a/app/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/app/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -53,6 +53,7 @@ import com.google.gson.reflect.TypeToken; import com.nextcloud.android.common.ui.color.ColorUtil; import com.nextcloud.android.common.ui.theme.utils.ColorRole; +import com.nextcloud.android.lib.resources.users.GenerateOneTimeAppPasswordRemoteOperation; import com.nextcloud.client.account.User; import com.nextcloud.client.account.UserAccountManager; import com.nextcloud.client.device.DeviceInfo; @@ -61,6 +62,7 @@ import com.nextcloud.client.onboarding.FirstRunActivity; import com.nextcloud.client.onboarding.OnboardingService; import com.nextcloud.client.preferences.AppPreferences; +import com.nextcloud.common.NextcloudClient; import com.nextcloud.common.PlainClient; import com.nextcloud.operations.PostMethod; import com.nextcloud.utils.extensions.BundleExtensionsKt; @@ -137,6 +139,7 @@ import androidx.lifecycle.LifecycleEventObserver; import androidx.lifecycle.ProcessLifecycleOwner; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import okhttp3.Credentials; import okhttp3.FormBody; import okhttp3.RequestBody; @@ -1594,7 +1597,36 @@ private void startQRScanner() { accountManager.getAccounts().length == 1) { DisplayUtils.showSnackMessage(this, R.string.no_mutliple_accounts_allowed); } else { - parseAndLoginFromWebView(resultData); + String onetimePrefix = getString(R.string.login_data_own_scheme) + PROTOCOL_SUFFIX + "onetime-login/"; + + if (resultData.startsWith(onetimePrefix)) { + LoginUrlInfo loginUrlInfo = parseLoginDataUrl(onetimePrefix, resultData); + + GenerateOneTimeAppPasswordRemoteOperation generateOneTimeAppPasswordRemoteOperation = new GenerateOneTimeAppPasswordRemoteOperation(); + + String credentials = Credentials.basic(loginUrlInfo.getLoginName(), loginUrlInfo.getAppPassword()); + NextcloudClient nextcloudClient = new NextcloudClient(Uri.parse(loginUrlInfo.getServer()), loginUrlInfo.getLoginName(), credentials,this); + + new Thread(new Runnable() { + @Override + public void run() { + RemoteOperationResult otpResult = nextcloudClient.execute(generateOneTimeAppPasswordRemoteOperation); + + mServerInfo.mBaseUrl = AuthenticatorUrlUtils.INSTANCE.normalizeUrlSuffix(loginUrlInfo.getServer()); + webViewUser = loginUrlInfo.getLoginName(); + webViewPassword = otpResult.getResultData(); + + runOnUiThread(new Runnable() { + @Override + public void run() { + checkOcServer(); + } + }); + } + }).start(); + } else { + parseAndLoginFromWebView(resultData); + } } } }); From 2c4833e998ae587eb5d256295c48047243850254 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 18 Dec 2025 13:45:31 +0100 Subject: [PATCH 2/2] wip Signed-off-by: tobiasKaminsky --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 827abeebdd08..74d37b7d18a1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ androidCommonLibraryVersion = "0.30.0" androidGifDrawableVersion = "1.2.29" androidImageCropperVersion = "4.7.0" -androidLibraryVersion = "827db94ca661d39ca7fae5c608eab1282b629b84" +androidLibraryVersion = "d5cb052be9ebf363547f2cda87d81d238fe6bf3b" androidPluginVersion = '8.13.2' androidsvgVersion = "1.4" androidxMediaVersion = "1.5.1"