From bcb16bb2519a8cc5ffc3bdec04742ef964bb25a6 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Mon, 27 Aug 2018 11:23:36 +0200 Subject: [PATCH] Fix credentials issue Signed-off-by: Mario Danic --- app/build.gradle | 4 ++-- .../talk/controllers/CallController.java | 8 ++++++++ .../controllers/CallNotificationController.java | 10 ++++++++++ .../controllers/SwitchAccountController.java | 6 ++++++ .../talk/jobs/AccountRemovalWorker.java | 6 +++++- .../nextcloud/talk/jobs/CapabilitiesWorker.java | 6 +++++- .../nextcloud/talk/jobs/NotificationWorker.java | 16 ++++++++++++---- .../presenters/MentionAutocompletePresenter.java | 1 + 8 files changed, 49 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b50280fc5..36f3a6c65 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { targetSdkVersion 27 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - versionCode 60 - versionName "3.0.0beta9" + versionCode 61 + versionName "3.0.0beta10" flavorDimensions "default" renderscriptTargetApi 19 diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index 9bf31642e..c9ec70307 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -134,6 +134,7 @@ import io.reactivex.schedulers.Schedulers; import me.zhanghai.android.effortlesspermissions.AfterPermissionDenied; import me.zhanghai.android.effortlesspermissions.EffortlessPermissions; import me.zhanghai.android.effortlesspermissions.OpenAppDetailsDialogFragment; +import okhttp3.Cache; import pub.devrel.easypermissions.AfterPermissionGranted; @AutoInjector(NextcloudTalkApplication.class) @@ -189,6 +190,8 @@ public class CallController extends BaseController { UserUtils userUtils; @Inject AppPreferences appPreferences; + @Inject + Cache cache; private PeerConnectionFactory peerConnectionFactory; private MediaConstraints audioConstraints; @@ -298,6 +301,11 @@ public class CallController extends BaseController { .setRepeatCount(PulseAnimation.INFINITE) .setRepeatMode(PulseAnimation.REVERSE); + try { + cache.evictAll(); + } catch (IOException e) { + Log.e(TAG, "Failed to evict cache"); + } if (isVoiceOnlyCall) { callControlEnableSpeaker.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java index 85f130807..42b827788 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java @@ -97,6 +97,7 @@ import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import okhttp3.Cache; @AutoInjector(NextcloudTalkApplication.class) public class CallNotificationController extends BaseController { @@ -109,6 +110,9 @@ public class CallNotificationController extends BaseController { @Inject AppPreferences appPreferences; + @Inject + Cache cache; + @Inject EventBus eventBus; @@ -298,6 +302,12 @@ public class CallNotificationController extends BaseController { if (handler == null) { handler = new Handler(); + + try { + cache.evictAll(); + } catch (IOException e) { + Log.e(TAG, "Failed to evict cache"); + } } if (currentConversation == null) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java index ffd777f00..a5a63742d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.java @@ -48,6 +48,7 @@ import com.nextcloud.talk.utils.AccountUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; +import java.net.CookieManager; import java.util.ArrayList; import java.util.List; @@ -70,6 +71,9 @@ public class SwitchAccountController extends BaseController { @BindView(R.id.recycler_view) RecyclerView recyclerView; + @Inject + CookieManager cookieManager; + @BindView(R.id.swipe_refresh_layout) SwipeRefreshLayout swipeRefreshLayout; private FlexibleAdapter adapter; @@ -105,6 +109,8 @@ public class SwitchAccountController extends BaseController { @Override public void onNext(UserEntity userEntity) { + cookieManager.getCookieStore().removeAll(); + userUtils.disableAllUsersWithoutId(userEntity.getId()); if (getActivity() != null) { getActivity().runOnUiThread(() -> getRouter().popCurrentController()); diff --git a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java index 84eaaea5f..c57c81a2c 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java @@ -39,6 +39,7 @@ import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.database.user.UserUtils; import java.io.IOException; +import java.net.CookieManager; import java.util.HashMap; import java.util.zip.CRC32; @@ -49,6 +50,7 @@ import autodagger.AutoInjector; import io.reactivex.CompletableObserver; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; +import okhttp3.JavaNetCookieJar; import okhttp3.OkHttpClient; import retrofit2.Retrofit; @@ -65,7 +67,6 @@ public class AccountRemovalWorker extends Worker { @Inject OkHttpClient okHttpClient; - @Inject NcApi ncApi; @NonNull @@ -85,6 +86,9 @@ public class AccountRemovalWorker extends Worker { credentials = ApiUtils.getCredentials(userEntity.getUserId(), userEntity.getToken()); + ncApi = retrofit.newBuilder().client(okHttpClient.newBuilder().cookieJar(new + JavaNetCookieJar(new CookieManager())).build()).build().create(NcApi.class); + String finalCredentials = credentials; ncApi.unregisterDeviceForNotificationsWithNextcloud(credentials, ApiUtils.getUrlNextcloudPush(userEntity .getBaseUrl())) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java index 93e337574..3acfbad1b 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java @@ -36,6 +36,7 @@ import com.nextcloud.talk.utils.database.user.UserUtils; import org.greenrobot.eventbus.EventBus; import java.io.IOException; +import java.net.CookieManager; import java.util.ArrayList; import java.util.List; @@ -46,6 +47,7 @@ import androidx.work.Worker; import autodagger.AutoInjector; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; +import okhttp3.JavaNetCookieJar; import okhttp3.OkHttpClient; import retrofit2.Retrofit; @@ -65,7 +67,6 @@ public class CapabilitiesWorker extends Worker { @Inject OkHttpClient okHttpClient; - @Inject NcApi ncApi; private void updateUser(CapabilitiesOverall capabilitiesOverall, UserEntity internalUserEntity) { @@ -124,6 +125,9 @@ public class CapabilitiesWorker extends Worker { for (Object userEntityObject : userEntityObjectList) { UserEntity internalUserEntity = (UserEntity) userEntityObject; + ncApi = retrofit.newBuilder().client(okHttpClient.newBuilder().cookieJar(new + JavaNetCookieJar(new CookieManager())).build()).build().create(NcApi.class); + ncApi.getCapabilities(ApiUtils.getCredentials(internalUserEntity.getUsername(), internalUserEntity.getToken()), ApiUtils.getUrlForCapabilities(internalUserEntity.getBaseUrl())) .retry(3) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java index 303c3585d..36842f9a0 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -58,7 +58,6 @@ import com.nextcloud.talk.utils.DoNotDisturbUtils; import com.nextcloud.talk.utils.NotificationUtils; import com.nextcloud.talk.utils.PushUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; -import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; import com.nextcloud.talk.utils.singletons.ApplicationWideStateHolder; @@ -66,6 +65,7 @@ import com.nextcloud.talk.utils.singletons.ApplicationWideStateHolder; import org.parceler.Parcels; import java.io.IOException; +import java.net.CookieManager; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; @@ -82,18 +82,23 @@ import androidx.work.Worker; import autodagger.AutoInjector; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; +import okhttp3.JavaNetCookieJar; +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; @AutoInjector(NextcloudTalkApplication.class) public class NotificationWorker extends Worker { public static final String TAG = "NotificationWorker"; - @Inject - UserUtils userUtils; - @Inject AppPreferences appPreferences; @Inject + Retrofit retrofit; + + @Inject + OkHttpClient okHttpClient; + NcApi ncApi; private DecryptedPushMessage decryptedPushMessage; @@ -398,6 +403,9 @@ public class NotificationWorker extends Worker { credentials = ApiUtils.getCredentials(signatureVerification.getUserEntity().getUserId(), signatureVerification.getUserEntity().getToken()); + ncApi = retrofit.newBuilder().client(okHttpClient.newBuilder().cookieJar(new + JavaNetCookieJar(new CookieManager())).build()).build().create(NcApi.class); + boolean hasChatSupport = signatureVerification.getUserEntity(). hasSpreedCapabilityWithName("chat-v2"); diff --git a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java index 94f3119f8..375bfd7b9 100644 --- a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java +++ b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java @@ -53,6 +53,7 @@ import io.reactivex.schedulers.Schedulers; public class MentionAutocompletePresenter extends RecyclerViewPresenter implements FlexibleAdapter.OnItemClickListener { @Inject NcApi ncApi; + private UserEntity currentUser; @Inject