|
@@ -49,26 +49,27 @@ import android.widget.CheckBox;
|
|
|
import android.widget.EditText;
|
|
|
import android.widget.TextView;
|
|
|
import android.widget.TextView.OnEditorActionListener;
|
|
|
-import android.widget.Toast;
|
|
|
|
|
|
import com.actionbarsherlock.app.SherlockDialogFragment;
|
|
|
import com.owncloud.android.Log_OC;
|
|
|
import com.owncloud.android.MainApp;
|
|
|
import com.owncloud.android.R;
|
|
|
import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener;
|
|
|
-import com.owncloud.android.network.OwnCloudClientUtils;
|
|
|
-import com.owncloud.android.network.webdav.WebdavClient;
|
|
|
+import com.owncloud.android.oc_framework.accounts.AccountTypeUtils;
|
|
|
+import com.owncloud.android.oc_framework.accounts.OwnCloudAccount;
|
|
|
+import com.owncloud.android.oc_framework.network.webdav.OwnCloudClientFactory;
|
|
|
+import com.owncloud.android.oc_framework.network.webdav.WebdavClient;
|
|
|
import com.owncloud.android.operations.ExistenceCheckOperation;
|
|
|
import com.owncloud.android.operations.OAuth2GetAccessToken;
|
|
|
-import com.owncloud.android.operations.OnRemoteOperationListener;
|
|
|
+import com.owncloud.android.oc_framework.operations.OnRemoteOperationListener;
|
|
|
import com.owncloud.android.operations.OwnCloudServerCheckOperation;
|
|
|
-import com.owncloud.android.operations.RemoteOperation;
|
|
|
-import com.owncloud.android.operations.RemoteOperationResult;
|
|
|
-import com.owncloud.android.operations.RemoteOperationResult.ResultCode;
|
|
|
+import com.owncloud.android.oc_framework.operations.RemoteOperation;
|
|
|
+import com.owncloud.android.oc_framework.operations.RemoteOperationResult;
|
|
|
+import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;
|
|
|
import com.owncloud.android.ui.dialog.SamlWebViewDialog;
|
|
|
import com.owncloud.android.ui.dialog.SslValidatorDialog;
|
|
|
import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;
|
|
|
-import com.owncloud.android.utils.OwnCloudVersion;
|
|
|
+import com.owncloud.android.oc_framework.utils.OwnCloudVersion;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -231,11 +232,11 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
/// retrieve extras from intent
|
|
|
mAccount = getIntent().getExtras().getParcelable(EXTRA_ACCOUNT);
|
|
|
if (mAccount != null) {
|
|
|
- String ocVersion = mAccountMgr.getUserData(mAccount, AccountAuthenticator.KEY_OC_VERSION);
|
|
|
+ String ocVersion = mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION);
|
|
|
if (ocVersion != null) {
|
|
|
mDiscoveredVersion = new OwnCloudVersion(ocVersion);
|
|
|
}
|
|
|
- mHostBaseUrl = normalizeUrl(mAccountMgr.getUserData(mAccount, AccountAuthenticator.KEY_OC_BASE_URL));
|
|
|
+ mHostBaseUrl = normalizeUrl(mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL));
|
|
|
mHostUrlInput.setText(mHostBaseUrl);
|
|
|
String userName = mAccount.name.substring(0, mAccount.name.lastIndexOf('@'));
|
|
|
mUsernameInput.setText(userName);
|
|
@@ -274,7 +275,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
mAccount = savedInstanceState.getParcelable(KEY_ACCOUNT);
|
|
|
mAuthTokenType = savedInstanceState.getString(AccountAuthenticator.KEY_AUTH_TOKEN_TYPE);
|
|
|
if (mAuthTokenType == null) {
|
|
|
- mAuthTokenType = MainApp.getAuthTokenTypePass();
|
|
|
+ mAuthTokenType = AccountTypeUtils.getAuthTokenTypePass(MainApp.getAccountType());
|
|
|
|
|
|
}
|
|
|
|
|
@@ -312,7 +313,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
if (mServerIsChecked && !mServerIsValid && refreshButtonEnabled) showRefreshButton();
|
|
|
mOkButton.setEnabled(mServerIsValid); // state not automatically recovered in configuration changes
|
|
|
|
|
|
- if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType) ||
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType) ||
|
|
|
!AUTH_OPTIONAL.equals(getString(R.string.auth_method_oauth2))) {
|
|
|
mOAuth2Check.setVisibility(View.GONE);
|
|
|
}
|
|
@@ -364,7 +365,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
@Override
|
|
|
public boolean onTouch(View view, MotionEvent event) {
|
|
|
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
|
|
- if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType) &&
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType) &&
|
|
|
mHostUrlInput.hasFocus()) {
|
|
|
checkOcServer();
|
|
|
}
|
|
@@ -388,8 +389,8 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
if (mAuthTokenType == null) {
|
|
|
if (mAccount != null) {
|
|
|
/// same authentication method than the one used to create the account to update
|
|
|
- oAuthRequired = (mAccountMgr.getUserData(mAccount, AccountAuthenticator.KEY_SUPPORTS_OAUTH2) != null);
|
|
|
- samlWebSsoRequired = (mAccountMgr.getUserData(mAccount, AccountAuthenticator.KEY_SUPPORTS_SAML_WEB_SSO) != null);
|
|
|
+ oAuthRequired = (mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_OAUTH2) != null);
|
|
|
+ samlWebSsoRequired = (mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null);
|
|
|
|
|
|
} else {
|
|
|
/// use the one set in setup.xml
|
|
@@ -397,11 +398,11 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
samlWebSsoRequired = AUTH_ON.equals(getString(R.string.auth_method_saml_web_sso));
|
|
|
}
|
|
|
if (oAuthRequired) {
|
|
|
- mAuthTokenType = MainApp.getAuthTokenTypeAccessToken();
|
|
|
+ mAuthTokenType = AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType());
|
|
|
} else if (samlWebSsoRequired) {
|
|
|
- mAuthTokenType = MainApp.getAuthTokenTypeSamlSessionCookie();
|
|
|
+ mAuthTokenType = AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType());
|
|
|
} else {
|
|
|
- mAuthTokenType = MainApp.getAuthTokenTypePass();
|
|
|
+ mAuthTokenType = AccountTypeUtils.getAuthTokenTypePass(MainApp.getAccountType());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -410,7 +411,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
mUsernameInput.setText(userName);
|
|
|
}
|
|
|
|
|
|
- mOAuth2Check.setChecked(MainApp.getAuthTokenTypeAccessToken().equals(mAuthTokenType));
|
|
|
+ mOAuth2Check.setChecked(AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType));
|
|
|
|
|
|
}
|
|
|
|
|
@@ -483,10 +484,10 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
protected void onResume() {
|
|
|
super.onResume();
|
|
|
if (mAction == ACTION_UPDATE_TOKEN && mJustCreated && getIntent().getBooleanExtra(EXTRA_ENFORCED_UPDATE, false)) {
|
|
|
- if (MainApp.getAuthTokenTypeAccessToken().equals(mAuthTokenType)) {
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
//Toast.makeText(this, R.string.auth_expired_oauth_token_toast, Toast.LENGTH_LONG).show();
|
|
|
showAuthMessage(getString(R.string.auth_expired_oauth_token_toast));
|
|
|
- } else if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType)) {
|
|
|
+ } else if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
//Toast.makeText(this, R.string.auth_expired_saml_sso_token_toast, Toast.LENGTH_LONG).show();
|
|
|
showAuthMessage(getString(R.string.auth_expired_saml_sso_token_toast));
|
|
|
} else {
|
|
@@ -522,7 +523,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
getString(R.string.oauth2_grant_type),
|
|
|
queryParameters);
|
|
|
//WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(getString(R.string.oauth2_url_endpoint_access)), getApplicationContext());
|
|
|
- WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(mOAuthTokenEndpointText.getText().toString().trim()), getApplicationContext(), true);
|
|
|
+ WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mOAuthTokenEndpointText.getText().toString().trim()), getApplicationContext(), true);
|
|
|
operation.execute(client, this, mHandler);
|
|
|
}
|
|
|
|
|
@@ -586,7 +587,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
mServerStatusIcon = R.drawable.progress_small;
|
|
|
showServerStatus();
|
|
|
mOcServerChkOperation = new OwnCloudServerCheckOperation(uri, this);
|
|
|
- WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(uri), this, true);
|
|
|
+ WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(uri), this, true);
|
|
|
mOperationThread = mOcServerChkOperation.execute(client, this, mHandler);
|
|
|
} else {
|
|
|
mServerStatusText = 0;
|
|
@@ -686,9 +687,9 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (MainApp.getAuthTokenTypeAccessToken().equals(mAuthTokenType)) {
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
startOauthorization();
|
|
|
- } else if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType)) {
|
|
|
+ } else if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
startSamlBasedFederatedSingleSignOnAuthorization();
|
|
|
} else {
|
|
|
checkBasicAuthorization();
|
|
@@ -713,7 +714,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
|
|
|
/// test credentials accessing the root folder
|
|
|
mAuthCheckOperation = new ExistenceCheckOperation("", this, false);
|
|
|
- WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);
|
|
|
+ WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);
|
|
|
client.setBasicCredentials(username, password);
|
|
|
mOperationThread = mAuthCheckOperation.execute(client, this, mHandler);
|
|
|
}
|
|
@@ -762,7 +763,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
|
|
|
/// test credentials accessing the root folder
|
|
|
mAuthCheckOperation = new ExistenceCheckOperation("", this, false);
|
|
|
- WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, false);
|
|
|
+ WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, false);
|
|
|
mOperationThread = mAuthCheckOperation.execute(client, this, mHandler);
|
|
|
|
|
|
}
|
|
@@ -782,7 +783,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
onGetOAuthAccessTokenFinish((OAuth2GetAccessToken)operation, result);
|
|
|
|
|
|
} else if (operation instanceof ExistenceCheckOperation) {
|
|
|
- if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType)) {
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
onSamlBasedFederatedSingleSignOnAuthorizationStart(operation, result);
|
|
|
|
|
|
} else {
|
|
@@ -1081,7 +1082,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
mAuthToken = ((OAuth2GetAccessToken)operation).getResultTokenMap().get(OAuth2Constants.KEY_ACCESS_TOKEN);
|
|
|
Log_OC.d(TAG, "Got ACCESS TOKEN: " + mAuthToken);
|
|
|
mAuthCheckOperation = new ExistenceCheckOperation("", this, false);
|
|
|
- WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);
|
|
|
+ WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);
|
|
|
client.setBearerCredentials(mAuthToken);
|
|
|
mAuthCheckOperation.execute(client, this, mHandler);
|
|
|
|
|
@@ -1167,12 +1168,12 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
response.putString(AccountManager.KEY_ACCOUNT_NAME, mAccount.name);
|
|
|
response.putString(AccountManager.KEY_ACCOUNT_TYPE, mAccount.type);
|
|
|
|
|
|
- if (MainApp.getAuthTokenTypeAccessToken().equals(mAuthTokenType)) {
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
response.putString(AccountManager.KEY_AUTHTOKEN, mAuthToken);
|
|
|
// the next line is necessary; by now, notifications are calling directly to the AuthenticatorActivity to update, without AccountManager intervention
|
|
|
mAccountMgr.setAuthToken(mAccount, mAuthTokenType, mAuthToken);
|
|
|
|
|
|
- } else if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType)) {
|
|
|
+ } else if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
String username = getUserNameForSamlSso();
|
|
|
if (!mUsernameInput.getText().toString().equals(username)) {
|
|
|
// fail - not a new account, but an existing one; disallow
|
|
@@ -1207,8 +1208,8 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
*/
|
|
|
private boolean createAccount() {
|
|
|
/// create and save new ownCloud account
|
|
|
- boolean isOAuth = MainApp.getAuthTokenTypeAccessToken().equals(mAuthTokenType);
|
|
|
- boolean isSaml = MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType);
|
|
|
+ boolean isOAuth = AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType);
|
|
|
+ boolean isSaml = AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType);
|
|
|
|
|
|
Uri uri = Uri.parse(mHostBaseUrl);
|
|
|
String username = mUsernameInput.getText().toString().trim();
|
|
@@ -1260,12 +1261,12 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
mAccountMgr.setAuthToken(mAccount, mAuthTokenType, mAuthToken);
|
|
|
}
|
|
|
/// add user data to the new account; TODO probably can be done in the last parameter addAccountExplicitly, or in KEY_USERDATA
|
|
|
- mAccountMgr.setUserData(mAccount, AccountAuthenticator.KEY_OC_VERSION, mDiscoveredVersion.toString());
|
|
|
- mAccountMgr.setUserData(mAccount, AccountAuthenticator.KEY_OC_BASE_URL, mHostBaseUrl);
|
|
|
+ mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION, mDiscoveredVersion.toString());
|
|
|
+ mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL, mHostBaseUrl);
|
|
|
if (isSaml) {
|
|
|
- mAccountMgr.setUserData(mAccount, AccountAuthenticator.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE");
|
|
|
+ mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE");
|
|
|
} else if (isOAuth) {
|
|
|
- mAccountMgr.setUserData(mAccount, AccountAuthenticator.KEY_SUPPORTS_OAUTH2, "TRUE");
|
|
|
+ mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_OAUTH2, "TRUE");
|
|
|
}
|
|
|
|
|
|
setAccountAuthenticatorResult(intent.getExtras());
|
|
@@ -1485,9 +1486,9 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
public void onCheckClick(View view) {
|
|
|
CheckBox oAuth2Check = (CheckBox)view;
|
|
|
if (oAuth2Check.isChecked()) {
|
|
|
- mAuthTokenType = MainApp.getAuthTokenTypeAccessToken();
|
|
|
+ mAuthTokenType = AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType());
|
|
|
} else {
|
|
|
- mAuthTokenType = MainApp.getAuthTokenTypePass();
|
|
|
+ mAuthTokenType = AccountTypeUtils.getAuthTokenTypePass(MainApp.getAccountType());
|
|
|
}
|
|
|
adaptViewAccordingToAuthenticationMethod();
|
|
|
}
|
|
@@ -1498,14 +1499,14 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
* the current authorization method.
|
|
|
*/
|
|
|
private void adaptViewAccordingToAuthenticationMethod () {
|
|
|
- if (MainApp.getAuthTokenTypeAccessToken().equals(mAuthTokenType)) {
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeAccessToken(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
// OAuth 2 authorization
|
|
|
mOAuthAuthEndpointText.setVisibility(View.VISIBLE);
|
|
|
mOAuthTokenEndpointText.setVisibility(View.VISIBLE);
|
|
|
mUsernameInput.setVisibility(View.GONE);
|
|
|
mPasswordInput.setVisibility(View.GONE);
|
|
|
|
|
|
- } else if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType)) {
|
|
|
+ } else if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
// SAML-based web Single Sign On
|
|
|
mOAuthAuthEndpointText.setVisibility(View.GONE);
|
|
|
mOAuthTokenEndpointText.setVisibility(View.GONE);
|
|
@@ -1551,7 +1552,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
}
|
|
|
|
|
|
} else if (actionId == EditorInfo.IME_ACTION_NEXT && inputField != null && inputField.equals(mHostUrlInput)) {
|
|
|
- if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType)) {
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType)) {
|
|
|
checkOcServer();
|
|
|
}
|
|
|
}
|
|
@@ -1657,7 +1658,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
|
|
|
|
|
|
@Override
|
|
|
public boolean onTouchEvent(MotionEvent event) {
|
|
|
- if (MainApp.getAuthTokenTypeSamlSessionCookie().equals(mAuthTokenType) &&
|
|
|
+ if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType) &&
|
|
|
mHostUrlInput.hasFocus() && event.getAction() == MotionEvent.ACTION_DOWN) {
|
|
|
checkOcServer();
|
|
|
}
|