From dafe5a801fec76657d6f7e60e1ae2907047eba5d Mon Sep 17 00:00:00 2001 From: Sumit Pundir Date: Tue, 7 Apr 2020 01:55:50 +0530 Subject: [PATCH 1/4] res: sync_prefs: fix mistyped value for 'android:targetClass' --- app/src/main/res/xml/sync_prefs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/xml/sync_prefs.xml b/app/src/main/res/xml/sync_prefs.xml index 078d232ec..07dfc604e 100644 --- a/app/src/main/res/xml/sync_prefs.xml +++ b/app/src/main/res/xml/sync_prefs.xml @@ -16,7 +16,7 @@ android:title="@string/manage_accounts"> -- GitLab From ad4ceab0d721c034b05751308d414b48670ca9ab Mon Sep 17 00:00:00 2001 From: Sumit Pundir Date: Tue, 7 Apr 2020 02:23:00 +0530 Subject: [PATCH 2/4] res: activity_account: change TabText color to white --- app/src/main/res/layout/activity_account.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml index 5752291c1..70ffada12 100644 --- a/app/src/main/res/layout/activity_account.xml +++ b/app/src/main/res/layout/activity_account.xml @@ -25,7 +25,8 @@ @@ -48,4 +49,4 @@ android:tooltipText="@string/account_synchronize_now" app:srcCompat="@drawable/ic_sync_white" /> - \ No newline at end of file + -- GitLab From 0672b94130611ff6bd7e7c39ec5d47976c8621c4 Mon Sep 17 00:00:00 2001 From: Sumit Pundir Date: Thu, 9 Apr 2020 15:28:33 +0530 Subject: [PATCH 3/4] ui: GoogleAuthenticatorFragment: fix internet connectivity checks --- .../ui/setup/GoogleAuthenticatorFragment.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/foundation/e/accountmanager/ui/setup/GoogleAuthenticatorFragment.kt b/app/src/main/java/foundation/e/accountmanager/ui/setup/GoogleAuthenticatorFragment.kt index 4d2d35531..dfaee173f 100644 --- a/app/src/main/java/foundation/e/accountmanager/ui/setup/GoogleAuthenticatorFragment.kt +++ b/app/src/main/java/foundation/e/accountmanager/ui/setup/GoogleAuthenticatorFragment.kt @@ -59,11 +59,6 @@ class GoogleAuthenticatorFragment : Fragment(), AuthorizationService.TokenRespon model = ViewModelProviders.of(this).get(GoogleAuthenticatorModel::class.java) loginModel = ViewModelProviders.of(requireActivity()).get(LoginModel::class.java) - if (!isNetworkAvailable()) { - Toast.makeText(context, "Please check your internet connection", Toast.LENGTH_LONG).show() - activity!!.finish() - } - // Initialise the authorization service authorizationService = AuthorizationService(context!!) @@ -83,8 +78,10 @@ class GoogleAuthenticatorFragment : Fragment(), AuthorizationService.TokenRespon val retrieveCallback = AuthorizationServiceConfiguration.RetrieveConfigurationCallback { serviceConfiguration, ex -> if (ex == null && serviceConfiguration != null) { makeAuthRequest(serviceConfiguration, idp) - } - else { + } else if (!isNetworkAvailable()) { + Toast.makeText(context, "Please check your internet connection", Toast.LENGTH_LONG).show() + activity!!.finish() + } else { Toast.makeText(context, "Login failed, please try again later", Toast.LENGTH_LONG).show() activity!!.finish() } @@ -104,8 +101,10 @@ class GoogleAuthenticatorFragment : Fragment(), AuthorizationService.TokenRespon if (response != null) { exchangeAuthorizationCode(response) - } - else { + } else if (!isNetworkAvailable()) { + Toast.makeText(context, "Please check your internet connection", Toast.LENGTH_LONG).show() + activity!!.finish() + } else { Toast.makeText(context, "Login failed, please try again later", Toast.LENGTH_LONG).show() activity!!.finish() } -- GitLab From d357b3e3c17c2065a4cc7c055108b96db29f9c4d Mon Sep 17 00:00:00 2001 From: Sumit Pundir Date: Thu, 9 Apr 2020 15:29:59 +0530 Subject: [PATCH 4/4] ui: LoginActivity: set alert dialog for device spoof Currently, AppAuth doesn't have any implementation on sending the device credentials and google takes the device name from within the Browser info to be shown at Google Account->Security->Devices which is basically getting spoofed due to some security reasons. So just put up an alert dialog before the sign in to make user aware of the fact and also for avoiding unnecessary panics on their side. Issue was reported here https://gitlab.e.foundation/e/apps/AccountManager/-/issues/51 --- .../accountmanager/ui/setup/LoginActivity.kt | 31 +++++++++++++++++-- app/src/main/res/values/strings.xml | 4 +++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/foundation/e/accountmanager/ui/setup/LoginActivity.kt b/app/src/main/java/foundation/e/accountmanager/ui/setup/LoginActivity.kt index cdc5874d8..3ec41cbaa 100644 --- a/app/src/main/java/foundation/e/accountmanager/ui/setup/LoginActivity.kt +++ b/app/src/main/java/foundation/e/accountmanager/ui/setup/LoginActivity.kt @@ -10,8 +10,13 @@ package foundation.e.accountmanager.ui.setup import android.os.Bundle import android.view.MenuItem +import android.text.Layout +import android.text.SpannableString +import android.text.style.AlignmentSpan import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AlertDialog import androidx.fragment.app.Fragment +import foundation.e.accountmanager.R import foundation.e.accountmanager.App import foundation.e.accountmanager.log.Logger import foundation.e.accountmanager.ui.UiUtils @@ -67,9 +72,29 @@ class LoginActivity: AppCompatActivity() { .commit() } ACCOUNT_PROVIDER_GOOGLE -> { - supportFragmentManager.beginTransaction() - .replace(android.R.id.content, GoogleAuthenticatorFragment()) - .commit() + val builder = AlertDialog.Builder(this) + val title = SpannableString(getString(R.string.google_alert_title)) + + // alert dialog title align center + title.setSpan( + AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), + 0, + title.length, + 0 + ) + + builder.setTitle(title) + builder.setMessage(getString(R.string.google_alert_message)) + builder.setPositiveButton(android.R.string.yes) { dialog, which -> + dialog.cancel() + supportFragmentManager.beginTransaction() + .replace(android.R.id.content, GoogleAuthenticatorFragment()) + .commit() + } + builder.setCancelable(false) + + val dialog = builder.create() + dialog.show() } else -> // first call, add first login fragment diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cb1dbad63..df7f5eb16 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -348,4 +348,8 @@ Account Manager: Connection security Account Manager has encountered an unknown certificate. Do you want to trust it? + + WARNING + /e/ will report a fake device model to Google to protect your privacy.\nYou can check which one on Google\'s Device Activity after you log in. + -- GitLab