diff --git a/app/src/main/java/com/nextcloud/talk/account/WebViewLoginActivity.kt b/app/src/main/java/com/nextcloud/talk/account/WebViewLoginActivity.kt index fb9874573..d2bd03579 100644 --- a/app/src/main/java/com/nextcloud/talk/account/WebViewLoginActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/account/WebViewLoginActivity.kt @@ -66,6 +66,8 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_TOKEN import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USERNAME import com.nextcloud.talk.utils.ssl.TrustManager import de.cotech.hw.fido.WebViewFidoBridge +import de.cotech.hw.fido2.WebViewWebauthnBridge +import de.cotech.hw.fido2.ui.WebauthnDialogOptions import io.reactivex.disposables.Disposable import java.lang.reflect.Field import java.net.CookieManager @@ -99,6 +101,7 @@ class WebViewLoginActivity : BaseActivity() { private var loginStep = 0 private var automatedLoginAttempted = false private var webViewFidoBridge: WebViewFidoBridge? = null + private var webViewWebauthnBridge: WebViewWebauthnBridge? = null private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { @@ -164,6 +167,12 @@ class WebViewLoginActivity : BaseActivity() { binding.webview.clearHistory() WebView.clearClientCertPreferences(null) webViewFidoBridge = WebViewFidoBridge.createInstanceForWebView(this, binding.webview) + + val webauthnOptionsBuilder = WebauthnDialogOptions.builder().setShowSdkLogo(true).setAllowSkipPin(true) + webViewWebauthnBridge = WebViewWebauthnBridge.createInstanceForWebView( + this, binding.webview, webauthnOptionsBuilder + ) + CookieSyncManager.createInstance(this) android.webkit.CookieManager.getInstance().removeAllCookies(null) val headers: MutableMap = HashMap() @@ -172,12 +181,14 @@ class WebViewLoginActivity : BaseActivity() { private var basePageLoaded = false override fun shouldInterceptRequest(view: WebView, request: WebResourceRequest): WebResourceResponse? { webViewFidoBridge?.delegateShouldInterceptRequest(view, request) + webViewWebauthnBridge?.delegateShouldInterceptRequest(view, request) return super.shouldInterceptRequest(view, request) } override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) { super.onPageStarted(view, url, favicon) webViewFidoBridge?.delegateOnPageStarted(view, url, favicon) + webViewWebauthnBridge?.delegateOnPageStarted(view, url, favicon) } @Deprecated("Use shouldOverrideUrlLoading(WebView view, WebResourceRequest request)")