+\r
+ public void onSamlDialogSuccess(String sessionCookie){\r
+ mAuthToken = sessionCookie;\r
+ \r
+ if (sessionCookie != null && sessionCookie.length() > 0) {\r
+ mAuthToken = sessionCookie;\r
+ boolean success = false;\r
+ if (mAction == ACTION_CREATE) {\r
+ success = createAccount();\r
+ \r
+ } else {\r
+ success = updateToken();\r
+ }\r
+ if (success) {\r
+ finish();\r
+ }\r
+ }\r
+\r
+ \r
+ }\r
+\r
+\r
+ @Override\r
+ public void onSsoFinished(String sessionCookies) {\r
+ //Toast.makeText(this, "got cookies: " + sessionCookie, Toast.LENGTH_LONG).show();\r
+\r
+ if (sessionCookies != null && sessionCookies.length() > 0) {\r
+ Log_OC.d(TAG, "Successful SSO - time to save the account");\r
+ onSamlDialogSuccess(sessionCookies);\r
+ Fragment fd = getSupportFragmentManager().findFragmentByTag(TAG_SAML_DIALOG);\r
+ if (fd != null && fd instanceof SherlockDialogFragment) {\r
+ Dialog d = ((SherlockDialogFragment)fd).getDialog();\r
+ if (d != null && d.isShowing()) {\r
+ d.dismiss();\r
+ }\r
+ }\r
+\r
+ } else { \r
+ // TODO - show fail\r
+ Log_OC.d(TAG, "SSO failed");\r
+ }\r
+ \r
+ }\r
+ \r
+ /** Show auth_message \r
+ * \r
+ * @param message\r
+ */\r
+ private void showAuthMessage(String message) {\r
+ mAuthMessage.setVisibility(View.VISIBLE);\r
+ mAuthMessage.setText(message);\r
+ }\r
+ \r
+ private void hideAuthMessage() {\r
+ mAuthMessage.setVisibility(View.GONE);\r
+ }\r
+\r
+ @Override\r
+ public boolean onTouchEvent(MotionEvent event) {\r
+ if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType) &&\r
+ mHostUrlInput.hasFocus() && event.getAction() == MotionEvent.ACTION_DOWN) {\r
+ checkOcServer();\r
+ }\r
+ return super.onTouchEvent(event);\r
+ }\r
+ \r
+ \r
+ /**\r
+ * Asynchronous task to get the SAML User name from OCS-API\r
+ *\r
+ */\r
+ private class GetUserNameTask extends AsyncTask<Void, Void, String>{\r
+\r
+ @Override\r
+ protected String doInBackground(Void... params) {\r
+ \r
+ GetUserNameRemoteOperation getUserOperation = new GetUserNameRemoteOperation(mHostBaseUrl, mAuthToken);\r
+ WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl), getApplicationContext(), true);\r
+ RemoteOperationResult result = getUserOperation.execute(client);\r
+ \r
+ return result.getUserName();\r
+ }\r
+ \r
+ }\r
+\r
+ /**\r
+ * Get the user name form OCS-API\r
+ * @return username\r
+ */\r
+ private String getUserNameForSaml(){\r
+\r
+ GetUserNameTask getUserTask = new GetUserNameTask();\r
+ String username = null;\r
+ try {\r
+ username = getUserTask.execute().get();\r
+ } catch (InterruptedException e) {\r
+ e.printStackTrace();\r
+ } catch (ExecutionException e) {\r
+ e.printStackTrace();\r
+ }\r
+\r
+ return username;\r
+ }\r