From ee47a7d57404f45100790a50c372e40fb78b592b Mon Sep 17 00:00:00 2001 From: Vivek Maskara Date: Thu, 11 Jul 2019 16:06:32 +0530 Subject: [PATCH] Fix auth issues in the app --- .../commons/auth/AuthenticatedActivity.java | 29 ------------------- .../free/nrw/commons/auth/LoginActivity.java | 4 +-- .../free/nrw/commons/auth/SessionManager.java | 26 ++++------------- .../category/CategoryImagesActivity.java | 20 +++---------- .../contributions/ContributionsFragment.java | 14 ++++----- .../commons/contributions/MainActivity.java | 19 ++++-------- .../ModificationsSyncAdapter.java | 10 ------- .../nrw/commons/review/ReviewActivity.java | 13 ++------- 8 files changed, 26 insertions(+), 109 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java index 3bb1ab9a19..426a846306 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java @@ -12,48 +12,19 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; -import static fr.free.nrw.commons.auth.AccountUtil.AUTH_COOKIE; - public abstract class AuthenticatedActivity extends NavigationBaseActivity { @Inject protected SessionManager sessionManager; @Inject MediaWikiApi mediaWikiApi; - private String authCookie; - - protected void requestAuthToken() { - if (authCookie != null) { - onAuthCookieAcquired(authCookie); - return; - } - authCookie = sessionManager.getAuthCookie(); - if (authCookie != null) { - onAuthCookieAcquired(authCookie); - } - } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - if (savedInstanceState != null) { - authCookie = savedInstanceState.getString(AUTH_COOKIE); - } - showBlockStatus(); } - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putString(AUTH_COOKIE, authCookie); - } - - protected abstract void onAuthCookieAcquired(String authCookie); - - protected abstract void onAuthFailure(); - /** * Makes API call to check if user is blocked from Commons. If the user is blocked, a snackbar * is created to notify the user diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index bf1a34b491..6915d075a4 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -212,8 +212,7 @@ protected void onResume() { } if (sessionManager.getCurrentAccount() != null - && sessionManager.isUserLoggedIn() - && sessionManager.getCachedAuthCookie() != null) { + && sessionManager.isUserLoggedIn()) { applicationKvStore.putBoolean("login_skipped", false); startMainActivity(); } @@ -308,6 +307,7 @@ private void onLoginSuccess(String username, String password) { // no longer attached to activity! return; } + sessionManager.setUserLoggedIn(true); LoginResult loginResult = new LoginResult(commonsWikiSite, "PASS", username, password, ""); AppAdapter.get().updateAccount(loginResult); progressDialog.dismiss(); diff --git a/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java b/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java index 882704f0ff..1da8332ed2 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java @@ -20,7 +20,6 @@ import fr.free.nrw.commons.mwapi.MediaWikiApi; import io.reactivex.Completable; import io.reactivex.Observable; -import timber.log.Timber; /** * Manage the current logged in user session. @@ -53,7 +52,7 @@ private boolean createAccount(@NonNull String userName, @NonNull String password return true; } - public void removeAccount() { + private void removeAccount() { Account account = getCurrentAccount(); if (account != null) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { @@ -101,7 +100,7 @@ public String getUserName() { } @Nullable - public String getRawUserName() { + private String getRawUserName() { Account account = getCurrentAccount(); return account == null ? null : accountManager().getUserData(account, KEY_RAWUSERNAME); } @@ -121,27 +120,14 @@ private AccountManager accountManager() { return AccountManager.get(context); } - public String getAuthCookie() { - if (!isUserLoggedIn()) { - Timber.e("User is not logged in"); - return null; - } else { - String authCookie = getCachedAuthCookie(); - if (authCookie == null) { - Timber.e("Auth cookie is null even after login"); - } - return authCookie; - } - } - - public String getCachedAuthCookie() { - return defaultKvStore.getString("getAuthCookie", null); - } - public boolean isUserLoggedIn() { return defaultKvStore.getBoolean("isUserLoggedIn", false); } + void setUserLoggedIn(boolean isLoggedIn) { + defaultKvStore.putBoolean("isUserLoggedIn", isLoggedIn); + } + public void forceLogin(Context context) { if (context != null) { LoginActivity.startYourself(context); diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java index 001f817b33..9006745d4d 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java @@ -2,20 +2,19 @@ import android.content.Context; import android.content.Intent; -import android.database.DataSetObserver; import android.os.Bundle; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.auth.AuthenticatedActivity; import fr.free.nrw.commons.explore.SearchActivity; import fr.free.nrw.commons.media.MediaDetailPagerFragment; import fr.free.nrw.commons.theme.NavigationBaseActivity; @@ -28,7 +27,7 @@ */ public class CategoryImagesActivity - extends AuthenticatedActivity + extends NavigationBaseActivity implements FragmentManager.OnBackStackChangedListener, MediaDetailPagerFragment.MediaDetailProvider, AdapterView.OnItemClickListener{ @@ -38,16 +37,6 @@ public class CategoryImagesActivity private CategoryImagesListFragment categoryImagesListFragment; private MediaDetailPagerFragment mediaDetails; - @Override - protected void onAuthCookieAcquired(String authCookie) { - - } - - @Override - protected void onAuthFailure() { - - } - /** * This method is called on backPressed of anyFragment in the activity. * We are changing the icon here from back to hamburger icon. @@ -69,7 +58,6 @@ protected void onCreate(Bundle savedInstanceState) { supportFragmentManager = getSupportFragmentManager(); setCategoryImagesFragment(); supportFragmentManager.addOnBackStackChangedListener(this); - requestAuthToken(); initDrawer(); setPageTitle(); } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java index 12c9ae6023..56feafacdc 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java @@ -85,8 +85,8 @@ public class ContributionsFragment private ContributionsListFragment contributionsListFragment; private MediaDetailPagerFragment mediaDetailPagerFragment; - public static final String CONTRIBUTION_LIST_FRAGMENT_TAG = "ContributionListFragmentTag"; - public static final String MEDIA_DETAIL_PAGER_FRAGMENT_TAG = "MediaDetailFragmentTag"; + private static final String CONTRIBUTION_LIST_FRAGMENT_TAG = "ContributionListFragmentTag"; + static final String MEDIA_DETAIL_PAGER_FRAGMENT_TAG = "MediaDetailFragmentTag"; @BindView(R.id.card_view_nearby) public NearbyNotificationCardView nearbyNotificationCardView; @BindView(R.id.campaigns_view) CampaignView campaignView; @@ -257,7 +257,7 @@ public void onAttach(Context context) { operations on first time fragment attached to an activity. Then they will be retained until fragment life time ends. */ - if (((MainActivity)getActivity()).isAuthCookieAcquired && !isFragmentAttachedBefore) { + if (!isFragmentAttachedBefore) { onAuthCookieAcquired(((MainActivity)getActivity()).uploadServiceIntent); isFragmentAttachedBefore = true; @@ -268,7 +268,7 @@ public void onAttach(Context context) { * Replace FrameLayout with ContributionsListFragment, user will see contributions list. Creates * new one if null. */ - public void showContributionsListFragment() { + private void showContributionsListFragment() { // show tabs on contribution list is visible ((MainActivity) getActivity()).showTabs(); // show nearby card view on contributions list is visible @@ -289,7 +289,7 @@ public void showContributionsListFragment() { * Replace FrameLayout with MediaDetailPagerFragment, user will see details of selected media. * Creates new one if null. */ - public void showMediaDetailPagerFragment() { + private void showMediaDetailPagerFragment() { // hide tabs on media detail view is visible ((MainActivity)getActivity()).hideTabs(); // hide nearby card view on media detail is visible @@ -308,7 +308,7 @@ public void onBackStackChanged() { * Called when onAuthCookieAcquired is called on authenticated parent activity * @param uploadServiceIntent */ - public void onAuthCookieAcquired(Intent uploadServiceIntent) { + void onAuthCookieAcquired(Intent uploadServiceIntent) { // Since we call onAuthCookieAcquired method from onAttach, isAdded is still false. So don't use it if (getActivity() != null) { // If fragment is attached to parent activity @@ -324,7 +324,7 @@ public void onAuthCookieAcquired(Intent uploadServiceIntent) { * mediaDetailPagerFragment, and preserve previous state in back stack. * Called when user selects a contribution. */ - public void showDetail(int i) { + private void showDetail(int i) { if (mediaDetailPagerFragment == null || !mediaDetailPagerFragment.isVisible()) { mediaDetailPagerFragment = new MediaDetailPagerFragment(); showMediaDetailPagerFragment(); diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java index 6cf85ed98e..14825657aa 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java @@ -29,7 +29,6 @@ import butterknife.ButterKnife; import fr.free.nrw.commons.BuildConfig; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.auth.AuthenticatedActivity; import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.location.LocationServiceManager; import fr.free.nrw.commons.nearby.NearbyFragment; @@ -38,6 +37,7 @@ import fr.free.nrw.commons.notification.NotificationActivity; import fr.free.nrw.commons.notification.NotificationController; import fr.free.nrw.commons.quiz.QuizChecker; +import fr.free.nrw.commons.theme.NavigationBaseActivity; import fr.free.nrw.commons.upload.UploadService; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; @@ -45,7 +45,7 @@ import static android.content.ContentResolver.requestSync; -public class MainActivity extends AuthenticatedActivity implements FragmentManager.OnBackStackChangedListener { +public class MainActivity extends NavigationBaseActivity implements FragmentManager.OnBackStackChangedListener { @Inject SessionManager sessionManager; @@ -63,7 +63,6 @@ public class MainActivity extends AuthenticatedActivity implements FragmentManag public Intent uploadServiceIntent; - public boolean isAuthCookieAcquired = false; public ContributionsActivityPagerAdapter contributionsActivityPagerAdapter; public static final int CONTRIBUTIONS_TAB_POSITION = 0; @@ -82,10 +81,10 @@ public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_contributions); ButterKnife.bind(this); - requestAuthToken(); initDrawer(); setTitle(getString(R.string.navigation_item_home)); // Should I create a new string variable with another name instead? + initMain(); if (savedInstanceState != null ) { onOrientationChanged = true; // Will be used in nearby fragment to determine significant update of map @@ -103,16 +102,13 @@ protected void onSaveInstanceState(Bundle outState) { outState.putInt("viewPagerCurrentItem", viewPager.getCurrentItem()); } - @Override - protected void onAuthCookieAcquired(String authCookie) { - // Do a sync everytime we get here! + private void initMain() { requestSync(sessionManager.getCurrentAccount(), BuildConfig.CONTRIBUTION_AUTHORITY, new Bundle()); uploadServiceIntent = new Intent(this, UploadService.class); uploadServiceIntent.setAction(UploadService.ACTION_START_SERVICE); startService(uploadServiceIntent); addTabsAndFragments(); - isAuthCookieAcquired = true; if (contributionsActivityPagerAdapter.getItem(0) != null) { ((ContributionsFragment)contributionsActivityPagerAdapter.getItem(0)).onAuthCookieAcquired(uploadServiceIntent); } @@ -232,14 +228,9 @@ public void showTabs() { } } - @Override - protected void onAuthFailure() { - - } - @Override public void onBackPressed() { - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); + DrawerLayout drawer = findViewById(R.id.drawer_layout); String contributionsFragmentTag = ((ContributionsActivityPagerAdapter) viewPager.getAdapter()).makeFragmentName(R.id.pager, 0); String nearbyFragmentTag = ((ContributionsActivityPagerAdapter) viewPager.getAdapter()).makeFragmentName(R.id.pager, 1); if (drawer.isDrawerOpen(GravityCompat.START)) { diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java index 6f8b4522c7..2c02e7798e 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java @@ -62,13 +62,6 @@ public void onPerformSync(Account account, Bundle bundle, String s, ContentProvi return; } - String authCookie = sessionManager.getAuthCookie(); - if (isNullOrWhiteSpace(authCookie)) { - Timber.d("Could not authenticate :("); - return; - } - - allModifications.moveToFirst(); Timber.d("Found %d modifications to execute", allModifications.getCount()); @@ -130,7 +123,4 @@ public void onPerformSync(Account account, Bundle bundle, String s, ContentProvi } } - private boolean isNullOrWhiteSpace(String value) { - return value == null || value.trim().isEmpty(); - } } diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java index b067d7ef1d..2f33d1f03a 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java @@ -26,16 +26,16 @@ import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.auth.AuthenticatedActivity; import fr.free.nrw.commons.delete.DeleteHelper; import fr.free.nrw.commons.mwapi.MediaWikiApi; +import fr.free.nrw.commons.theme.NavigationBaseActivity; import fr.free.nrw.commons.utils.DialogUtil; import fr.free.nrw.commons.utils.ViewUtil; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; -public class ReviewActivity extends AuthenticatedActivity { +public class ReviewActivity extends NavigationBaseActivity { @BindView(R.id.pager_indicator_review) public CirclePageIndicator pagerIndicator; @@ -94,15 +94,6 @@ public Media getMedia() { return media; } - @Override - protected void onAuthCookieAcquired(String authCookie) { - - } - - @Override - protected void onAuthFailure() { - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);