Skip to content

Commit 3df31a6

Browse files
wip
Signed-off-by: tobiasKaminsky <[email protected]>
1 parent 673879f commit 3df31a6

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

app/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import com.google.gson.reflect.TypeToken;
5454
import com.nextcloud.android.common.ui.color.ColorUtil;
5555
import com.nextcloud.android.common.ui.theme.utils.ColorRole;
56+
import com.nextcloud.android.lib.resources.users.GenerateOneTimeAppPasswordRemoteOperation;
5657
import com.nextcloud.client.account.User;
5758
import com.nextcloud.client.account.UserAccountManager;
5859
import com.nextcloud.client.device.DeviceInfo;
@@ -61,6 +62,7 @@
6162
import com.nextcloud.client.onboarding.FirstRunActivity;
6263
import com.nextcloud.client.onboarding.OnboardingService;
6364
import com.nextcloud.client.preferences.AppPreferences;
65+
import com.nextcloud.common.NextcloudClient;
6466
import com.nextcloud.common.PlainClient;
6567
import com.nextcloud.operations.PostMethod;
6668
import com.nextcloud.utils.extensions.BundleExtensionsKt;
@@ -137,6 +139,7 @@
137139
import androidx.lifecycle.LifecycleEventObserver;
138140
import androidx.lifecycle.ProcessLifecycleOwner;
139141
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
142+
import okhttp3.Credentials;
140143
import okhttp3.FormBody;
141144
import okhttp3.RequestBody;
142145

@@ -1594,7 +1597,36 @@ private void startQRScanner() {
15941597
accountManager.getAccounts().length == 1) {
15951598
DisplayUtils.showSnackMessage(this, R.string.no_mutliple_accounts_allowed);
15961599
} else {
1597-
parseAndLoginFromWebView(resultData);
1600+
String onetimePrefix = getString(R.string.login_data_own_scheme) + PROTOCOL_SUFFIX + "onetime-login/";
1601+
1602+
if (resultData.startsWith(onetimePrefix)) {
1603+
LoginUrlInfo loginUrlInfo = parseLoginDataUrl(onetimePrefix, resultData);
1604+
1605+
GenerateOneTimeAppPasswordRemoteOperation generateOneTimeAppPasswordRemoteOperation = new GenerateOneTimeAppPasswordRemoteOperation();
1606+
1607+
String credentials = Credentials.basic(loginUrlInfo.getLoginName(), loginUrlInfo.getAppPassword());
1608+
NextcloudClient nextcloudClient = new NextcloudClient(Uri.parse(loginUrlInfo.getServer()), loginUrlInfo.getLoginName(), credentials,this);
1609+
1610+
new Thread(new Runnable() {
1611+
@Override
1612+
public void run() {
1613+
RemoteOperationResult<String> otpResult = nextcloudClient.execute(generateOneTimeAppPasswordRemoteOperation);
1614+
1615+
mServerInfo.mBaseUrl = AuthenticatorUrlUtils.INSTANCE.normalizeUrlSuffix(loginUrlInfo.getServer());
1616+
webViewUser = loginUrlInfo.getLoginName();
1617+
webViewPassword = otpResult.getResultData();
1618+
1619+
runOnUiThread(new Runnable() {
1620+
@Override
1621+
public void run() {
1622+
checkOcServer();
1623+
}
1624+
});
1625+
}
1626+
}).start();
1627+
} else {
1628+
parseAndLoginFromWebView(resultData);
1629+
}
15981630
}
15991631
}
16001632
});

0 commit comments

Comments
 (0)