Skip to content

Commit cd57552

Browse files
authored
Fix auth issues in the app (commons-app#3064)
1 parent 5d64cac commit cd57552

File tree

8 files changed

+26
-109
lines changed

8 files changed

+26
-109
lines changed

app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java

-29
Original file line numberDiff line numberDiff line change
@@ -12,48 +12,19 @@
1212
import io.reactivex.android.schedulers.AndroidSchedulers;
1313
import io.reactivex.schedulers.Schedulers;
1414

15-
import static fr.free.nrw.commons.auth.AccountUtil.AUTH_COOKIE;
16-
1715
public abstract class AuthenticatedActivity extends NavigationBaseActivity {
1816

1917
@Inject
2018
protected SessionManager sessionManager;
2119
@Inject
2220
MediaWikiApi mediaWikiApi;
23-
private String authCookie;
24-
25-
protected void requestAuthToken() {
26-
if (authCookie != null) {
27-
onAuthCookieAcquired(authCookie);
28-
return;
29-
}
30-
authCookie = sessionManager.getAuthCookie();
31-
if (authCookie != null) {
32-
onAuthCookieAcquired(authCookie);
33-
}
34-
}
3521

3622
@Override
3723
protected void onCreate(Bundle savedInstanceState) {
3824
super.onCreate(savedInstanceState);
39-
40-
if (savedInstanceState != null) {
41-
authCookie = savedInstanceState.getString(AUTH_COOKIE);
42-
}
43-
4425
showBlockStatus();
4526
}
4627

47-
@Override
48-
protected void onSaveInstanceState(Bundle outState) {
49-
super.onSaveInstanceState(outState);
50-
outState.putString(AUTH_COOKIE, authCookie);
51-
}
52-
53-
protected abstract void onAuthCookieAcquired(String authCookie);
54-
55-
protected abstract void onAuthFailure();
56-
5728
/**
5829
* Makes API call to check if user is blocked from Commons. If the user is blocked, a snackbar
5930
* is created to notify the user

app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,7 @@ protected void onResume() {
212212
}
213213

214214
if (sessionManager.getCurrentAccount() != null
215-
&& sessionManager.isUserLoggedIn()
216-
&& sessionManager.getCachedAuthCookie() != null) {
215+
&& sessionManager.isUserLoggedIn()) {
217216
applicationKvStore.putBoolean("login_skipped", false);
218217
startMainActivity();
219218
}
@@ -308,6 +307,7 @@ private void onLoginSuccess(String username, String password) {
308307
// no longer attached to activity!
309308
return;
310309
}
310+
sessionManager.setUserLoggedIn(true);
311311
LoginResult loginResult = new LoginResult(commonsWikiSite, "PASS", username, password, "");
312312
AppAdapter.get().updateAccount(loginResult);
313313
progressDialog.dismiss();

app/src/main/java/fr/free/nrw/commons/auth/SessionManager.java

+6-20
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import fr.free.nrw.commons.mwapi.MediaWikiApi;
2121
import io.reactivex.Completable;
2222
import io.reactivex.Observable;
23-
import timber.log.Timber;
2423

2524
/**
2625
* Manage the current logged in user session.
@@ -53,7 +52,7 @@ private boolean createAccount(@NonNull String userName, @NonNull String password
5352
return true;
5453
}
5554

56-
public void removeAccount() {
55+
private void removeAccount() {
5756
Account account = getCurrentAccount();
5857
if (account != null) {
5958
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
@@ -101,7 +100,7 @@ public String getUserName() {
101100
}
102101

103102
@Nullable
104-
public String getRawUserName() {
103+
private String getRawUserName() {
105104
Account account = getCurrentAccount();
106105
return account == null ? null : accountManager().getUserData(account, KEY_RAWUSERNAME);
107106
}
@@ -121,27 +120,14 @@ private AccountManager accountManager() {
121120
return AccountManager.get(context);
122121
}
123122

124-
public String getAuthCookie() {
125-
if (!isUserLoggedIn()) {
126-
Timber.e("User is not logged in");
127-
return null;
128-
} else {
129-
String authCookie = getCachedAuthCookie();
130-
if (authCookie == null) {
131-
Timber.e("Auth cookie is null even after login");
132-
}
133-
return authCookie;
134-
}
135-
}
136-
137-
public String getCachedAuthCookie() {
138-
return defaultKvStore.getString("getAuthCookie", null);
139-
}
140-
141123
public boolean isUserLoggedIn() {
142124
return defaultKvStore.getBoolean("isUserLoggedIn", false);
143125
}
144126

127+
void setUserLoggedIn(boolean isLoggedIn) {
128+
defaultKvStore.putBoolean("isUserLoggedIn", isLoggedIn);
129+
}
130+
145131
public void forceLogin(Context context) {
146132
if (context != null) {
147133
LoginActivity.startYourself(context);

app/src/main/java/fr/free/nrw/commons/category/CategoryImagesActivity.java

+4-16
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,19 @@
22

33
import android.content.Context;
44
import android.content.Intent;
5-
import android.database.DataSetObserver;
65
import android.os.Bundle;
7-
import androidx.fragment.app.FragmentManager;
8-
import androidx.fragment.app.FragmentTransaction;
96
import android.view.Menu;
107
import android.view.MenuInflater;
118
import android.view.MenuItem;
129
import android.view.View;
1310
import android.widget.AdapterView;
1411

12+
import androidx.fragment.app.FragmentManager;
13+
import androidx.fragment.app.FragmentTransaction;
14+
1515
import butterknife.ButterKnife;
1616
import fr.free.nrw.commons.Media;
1717
import fr.free.nrw.commons.R;
18-
import fr.free.nrw.commons.auth.AuthenticatedActivity;
1918
import fr.free.nrw.commons.explore.SearchActivity;
2019
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
2120
import fr.free.nrw.commons.theme.NavigationBaseActivity;
@@ -28,7 +27,7 @@
2827
*/
2928

3029
public class CategoryImagesActivity
31-
extends AuthenticatedActivity
30+
extends NavigationBaseActivity
3231
implements FragmentManager.OnBackStackChangedListener,
3332
MediaDetailPagerFragment.MediaDetailProvider,
3433
AdapterView.OnItemClickListener{
@@ -38,16 +37,6 @@ public class CategoryImagesActivity
3837
private CategoryImagesListFragment categoryImagesListFragment;
3938
private MediaDetailPagerFragment mediaDetails;
4039

41-
@Override
42-
protected void onAuthCookieAcquired(String authCookie) {
43-
44-
}
45-
46-
@Override
47-
protected void onAuthFailure() {
48-
49-
}
50-
5140
/**
5241
* This method is called on backPressed of anyFragment in the activity.
5342
* We are changing the icon here from back to hamburger icon.
@@ -69,7 +58,6 @@ protected void onCreate(Bundle savedInstanceState) {
6958
supportFragmentManager = getSupportFragmentManager();
7059
setCategoryImagesFragment();
7160
supportFragmentManager.addOnBackStackChangedListener(this);
72-
requestAuthToken();
7361
initDrawer();
7462
setPageTitle();
7563
}

app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ public class ContributionsFragment
8585

8686
private ContributionsListFragment contributionsListFragment;
8787
private MediaDetailPagerFragment mediaDetailPagerFragment;
88-
public static final String CONTRIBUTION_LIST_FRAGMENT_TAG = "ContributionListFragmentTag";
89-
public static final String MEDIA_DETAIL_PAGER_FRAGMENT_TAG = "MediaDetailFragmentTag";
88+
private static final String CONTRIBUTION_LIST_FRAGMENT_TAG = "ContributionListFragmentTag";
89+
static final String MEDIA_DETAIL_PAGER_FRAGMENT_TAG = "MediaDetailFragmentTag";
9090

9191
@BindView(R.id.card_view_nearby) public NearbyNotificationCardView nearbyNotificationCardView;
9292
@BindView(R.id.campaigns_view) CampaignView campaignView;
@@ -257,7 +257,7 @@ public void onAttach(Context context) {
257257
operations on first time fragment attached to an activity. Then they will be retained
258258
until fragment life time ends.
259259
*/
260-
if (((MainActivity)getActivity()).isAuthCookieAcquired && !isFragmentAttachedBefore) {
260+
if (!isFragmentAttachedBefore) {
261261
onAuthCookieAcquired(((MainActivity)getActivity()).uploadServiceIntent);
262262
isFragmentAttachedBefore = true;
263263

@@ -268,7 +268,7 @@ public void onAttach(Context context) {
268268
* Replace FrameLayout with ContributionsListFragment, user will see contributions list. Creates
269269
* new one if null.
270270
*/
271-
public void showContributionsListFragment() {
271+
private void showContributionsListFragment() {
272272
// show tabs on contribution list is visible
273273
((MainActivity) getActivity()).showTabs();
274274
// show nearby card view on contributions list is visible
@@ -289,7 +289,7 @@ public void showContributionsListFragment() {
289289
* Replace FrameLayout with MediaDetailPagerFragment, user will see details of selected media.
290290
* Creates new one if null.
291291
*/
292-
public void showMediaDetailPagerFragment() {
292+
private void showMediaDetailPagerFragment() {
293293
// hide tabs on media detail view is visible
294294
((MainActivity)getActivity()).hideTabs();
295295
// hide nearby card view on media detail is visible
@@ -308,7 +308,7 @@ public void onBackStackChanged() {
308308
* Called when onAuthCookieAcquired is called on authenticated parent activity
309309
* @param uploadServiceIntent
310310
*/
311-
public void onAuthCookieAcquired(Intent uploadServiceIntent) {
311+
void onAuthCookieAcquired(Intent uploadServiceIntent) {
312312
// Since we call onAuthCookieAcquired method from onAttach, isAdded is still false. So don't use it
313313

314314
if (getActivity() != null) { // If fragment is attached to parent activity
@@ -324,7 +324,7 @@ public void onAuthCookieAcquired(Intent uploadServiceIntent) {
324324
* mediaDetailPagerFragment, and preserve previous state in back stack.
325325
* Called when user selects a contribution.
326326
*/
327-
public void showDetail(int i) {
327+
private void showDetail(int i) {
328328
if (mediaDetailPagerFragment == null || !mediaDetailPagerFragment.isVisible()) {
329329
mediaDetailPagerFragment = new MediaDetailPagerFragment();
330330
showMediaDetailPagerFragment();

app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java

+5-14
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import butterknife.ButterKnife;
3030
import fr.free.nrw.commons.BuildConfig;
3131
import fr.free.nrw.commons.R;
32-
import fr.free.nrw.commons.auth.AuthenticatedActivity;
3332
import fr.free.nrw.commons.auth.SessionManager;
3433
import fr.free.nrw.commons.location.LocationServiceManager;
3534
import fr.free.nrw.commons.nearby.NearbyFragment;
@@ -38,14 +37,15 @@
3837
import fr.free.nrw.commons.notification.NotificationActivity;
3938
import fr.free.nrw.commons.notification.NotificationController;
4039
import fr.free.nrw.commons.quiz.QuizChecker;
40+
import fr.free.nrw.commons.theme.NavigationBaseActivity;
4141
import fr.free.nrw.commons.upload.UploadService;
4242
import io.reactivex.android.schedulers.AndroidSchedulers;
4343
import io.reactivex.schedulers.Schedulers;
4444
import timber.log.Timber;
4545

4646
import static android.content.ContentResolver.requestSync;
4747

48-
public class MainActivity extends AuthenticatedActivity implements FragmentManager.OnBackStackChangedListener {
48+
public class MainActivity extends NavigationBaseActivity implements FragmentManager.OnBackStackChangedListener {
4949

5050
@Inject
5151
SessionManager sessionManager;
@@ -63,7 +63,6 @@ public class MainActivity extends AuthenticatedActivity implements FragmentManag
6363

6464

6565
public Intent uploadServiceIntent;
66-
public boolean isAuthCookieAcquired = false;
6766

6867
public ContributionsActivityPagerAdapter contributionsActivityPagerAdapter;
6968
public static final int CONTRIBUTIONS_TAB_POSITION = 0;
@@ -82,10 +81,10 @@ public void onCreate(Bundle savedInstanceState) {
8281
setContentView(R.layout.activity_contributions);
8382
ButterKnife.bind(this);
8483

85-
requestAuthToken();
8684
initDrawer();
8785
setTitle(getString(R.string.navigation_item_home)); // Should I create a new string variable with another name instead?
8886

87+
initMain();
8988

9089
if (savedInstanceState != null ) {
9190
onOrientationChanged = true; // Will be used in nearby fragment to determine significant update of map
@@ -103,16 +102,13 @@ protected void onSaveInstanceState(Bundle outState) {
103102
outState.putInt("viewPagerCurrentItem", viewPager.getCurrentItem());
104103
}
105104

106-
@Override
107-
protected void onAuthCookieAcquired(String authCookie) {
108-
// Do a sync everytime we get here!
105+
private void initMain() {
109106
requestSync(sessionManager.getCurrentAccount(), BuildConfig.CONTRIBUTION_AUTHORITY, new Bundle());
110107
uploadServiceIntent = new Intent(this, UploadService.class);
111108
uploadServiceIntent.setAction(UploadService.ACTION_START_SERVICE);
112109
startService(uploadServiceIntent);
113110

114111
addTabsAndFragments();
115-
isAuthCookieAcquired = true;
116112
if (contributionsActivityPagerAdapter.getItem(0) != null) {
117113
((ContributionsFragment)contributionsActivityPagerAdapter.getItem(0)).onAuthCookieAcquired(uploadServiceIntent);
118114
}
@@ -232,14 +228,9 @@ public void showTabs() {
232228
}
233229
}
234230

235-
@Override
236-
protected void onAuthFailure() {
237-
238-
}
239-
240231
@Override
241232
public void onBackPressed() {
242-
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
233+
DrawerLayout drawer = findViewById(R.id.drawer_layout);
243234
String contributionsFragmentTag = ((ContributionsActivityPagerAdapter) viewPager.getAdapter()).makeFragmentName(R.id.pager, 0);
244235
String nearbyFragmentTag = ((ContributionsActivityPagerAdapter) viewPager.getAdapter()).makeFragmentName(R.id.pager, 1);
245236
if (drawer.isDrawerOpen(GravityCompat.START)) {

app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java

-10
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,6 @@ public void onPerformSync(Account account, Bundle bundle, String s, ContentProvi
6262
return;
6363
}
6464

65-
String authCookie = sessionManager.getAuthCookie();
66-
if (isNullOrWhiteSpace(authCookie)) {
67-
Timber.d("Could not authenticate :(");
68-
return;
69-
}
70-
71-
7265
allModifications.moveToFirst();
7366

7467
Timber.d("Found %d modifications to execute", allModifications.getCount());
@@ -130,7 +123,4 @@ public void onPerformSync(Account account, Bundle bundle, String s, ContentProvi
130123
}
131124
}
132125

133-
private boolean isNullOrWhiteSpace(String value) {
134-
return value == null || value.trim().isEmpty();
135-
}
136126
}

app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java

+2-11
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@
2626
import butterknife.ButterKnife;
2727
import fr.free.nrw.commons.Media;
2828
import fr.free.nrw.commons.R;
29-
import fr.free.nrw.commons.auth.AuthenticatedActivity;
3029
import fr.free.nrw.commons.delete.DeleteHelper;
3130
import fr.free.nrw.commons.mwapi.MediaWikiApi;
31+
import fr.free.nrw.commons.theme.NavigationBaseActivity;
3232
import fr.free.nrw.commons.utils.DialogUtil;
3333
import fr.free.nrw.commons.utils.ViewUtil;
3434
import io.reactivex.android.schedulers.AndroidSchedulers;
3535
import io.reactivex.disposables.CompositeDisposable;
3636
import io.reactivex.schedulers.Schedulers;
3737

38-
public class ReviewActivity extends AuthenticatedActivity {
38+
public class ReviewActivity extends NavigationBaseActivity {
3939

4040
@BindView(R.id.pager_indicator_review)
4141
public CirclePageIndicator pagerIndicator;
@@ -94,15 +94,6 @@ public Media getMedia() {
9494
return media;
9595
}
9696

97-
@Override
98-
protected void onAuthCookieAcquired(String authCookie) {
99-
100-
}
101-
102-
@Override
103-
protected void onAuthFailure() {
104-
}
105-
10697
@Override
10798
protected void onCreate(Bundle savedInstanceState) {
10899
super.onCreate(savedInstanceState);

0 commit comments

Comments
 (0)