X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/6bab28424a71006337d88f4dc3dce6b61483effc..d3d0816ed7c16397cad47fc91ce43d5ec5d91995:/src/com/owncloud/android/authentication/SsoWebViewClient.java diff --git a/src/com/owncloud/android/authentication/SsoWebViewClient.java b/src/com/owncloud/android/authentication/SsoWebViewClient.java index 27327a96..83f70ac9 100644 --- a/src/com/owncloud/android/authentication/SsoWebViewClient.java +++ b/src/com/owncloud/android/authentication/SsoWebViewClient.java @@ -24,15 +24,8 @@ import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; -import com.actionbarsherlock.app.SherlockFragmentActivity; -import com.owncloud.android.R; -import com.owncloud.android.lib.common.network.NetworkUtils; -import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; -import com.owncloud.android.ui.dialog.SslUntrustedCertDialogABSTRACT; -import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener; -import com.owncloud.android.utils.Log_OC; - import android.app.AlertDialog; +import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.graphics.Bitmap; @@ -41,9 +34,7 @@ import android.net.http.SslError; import android.os.Bundle; import android.os.Handler; import android.os.Message; -import android.support.v4.app.FragmentActivity; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; +import android.text.InputType; import android.view.KeyEvent; import android.view.View; import android.webkit.CookieManager; @@ -52,6 +43,12 @@ import android.webkit.SslErrorHandler; import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; +import android.widget.EditText; +import android.widget.LinearLayout; + +import com.owncloud.android.R; +import com.owncloud.android.lib.common.network.NetworkUtils; +import com.owncloud.android.utils.Log_OC; /** @@ -63,11 +60,9 @@ import android.webkit.WebViewClient; * * @author David A. Velasco */ -public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCertListener { +public class SsoWebViewClient extends WebViewClient { private static final String TAG = SsoWebViewClient.class.getSimpleName(); - - public final static String DIALOG_UNTRUSTED_CERT = "UNTRUSTED CERT"; public interface SsoWebViewClientListener { public void onSsoFinished(String sessionCookie); @@ -176,20 +171,8 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer if (isKnownServer) { handler.proceed(); - } else if (x509Certificate != null) { - // Show a dialog with all the certificate info - SslUntrustedCertDialog dialog = SslUntrustedCertDialog.newInstance(mContext, x509Certificate, this, handler); - FragmentManager fm = ((SherlockFragmentActivity)mContext).getSupportFragmentManager(); - FragmentTransaction ft = fm.beginTransaction(); - dialog.show(ft, DIALOG_UNTRUSTED_CERT); - handler.cancel(); } else { - // Show a dialog with the certificate information available in SslError (not full) - SslUntrustedCertDialogABSTRACT dialog = SslUntrustedCertDialogABSTRACT.newInstanceForEmptySslError(error, handler); - FragmentManager fm = ((SherlockFragmentActivity)mContext).getSupportFragmentManager(); - FragmentTransaction ft = fm.beginTransaction(); - dialog.show(ft, DIALOG_UNTRUSTED_CERT); - // let's forward the handler, and see what happens... + ((AuthenticatorActivity)mContext).showUntrustedCertDialog(x509Certificate, error, handler); } } @@ -219,6 +202,10 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer @Override public void onReceivedHttpAuthRequest (WebView view, HttpAuthHandler handler, String host, String realm) { Log_OC.d(TAG, "onReceivedHttpAuthRequest : " + host); +// Toast.makeText(mContext, "onReceivedHttpAuthRequest : " + host, Toast.LENGTH_LONG).show(); + + createAuthenticationDialog(view, handler); + } @Override @@ -254,19 +241,58 @@ public class SsoWebViewClient extends WebViewClient implements OnSslUntrustedCer return false; } - @Override - public void onFailedSavingCertificate() { - AlertDialog.Builder builder = new AlertDialog.Builder(mContext); - builder.setMessage(mContext.getString(R.string.ssl_validator_not_saved)); - builder.setCancelable(false); - builder.setPositiveButton(R.string.common_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - }; - }); - builder.create().show(); - - } + /** + * Create dialog for request authentication to the user + * @param webView + * @param handler + */ + private void createAuthenticationDialog(WebView webView, HttpAuthHandler handler) { + final WebView mWebView = webView; + final HttpAuthHandler mHandler = handler; + + // Create field for username + final EditText usernameET = new EditText(mContext); + usernameET.setHint(mContext.getText(R.string.auth_username)); + + // Create field for password + final EditText passwordET = new EditText(mContext); + passwordET.setHint(mContext.getText(R.string.auth_password)); + passwordET.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + + // Prepare LinearLayout for dialog + LinearLayout ll = new LinearLayout(mContext); + ll.setOrientation(LinearLayout.VERTICAL); + ll.addView(usernameET); + ll.addView(passwordET); + + Builder authDialog = new AlertDialog + .Builder(mContext) + .setTitle(mContext.getText(R.string.saml_authentication_required_text)) + .setView(ll) + .setCancelable(false) + .setPositiveButton(mContext.getText(R.string.common_ok), + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + + String username = usernameET.getText().toString().trim(); + String password = passwordET.getText().toString().trim(); + // Proceed with the authentication + mHandler.proceed(username, password); + dialog.dismiss(); + } + }) + .setNegativeButton(mContext.getText(R.string.common_cancel), + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + dialog.dismiss(); + mWebView.stopLoading(); + } + }); + + if (mWebView!=null) { + authDialog.show(); + } + + } }