From 3cfc4a561e93ed47e23d8ae41362a15a32d0ed6c Mon Sep 17 00:00:00 2001 From: S-6203-ATLED Date: Tue, 14 Jun 2022 14:17:18 +0900 Subject: [PATCH 1/5] =?UTF-8?q?#92=20=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=BF=E3=83=83=E3=83=97=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E5=87=A6=E7=90=86=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/ui/documentweb/DocumentWebFragment.kt | 5 +++++ .../agileworks/view/ui/login/LoginActivity.kt | 2 ++ .../agileworks/view/ui/login/LoginFragment.kt | 16 ++++++++++------ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt index 6fe82477..04dbf00e 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt @@ -21,6 +21,7 @@ import jp.atled.agileworks.R import jp.atled.agileworks.AwApp import jp.atled.agileworks.databinding.FragmentWebviewDetailBinding import jp.atled.agileworks.model.SessionRepository +import jp.atled.agileworks.view.ui.login.LoginActivity import kotlinx.android.synthetic.main.fragment_webview_detail.* import java.lang.Exception import kotlin.math.absoluteValue @@ -89,6 +90,8 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { displayDisconnectViewState() webShare.presenter.updateAutoReloadState(true) + // アプリがバックグラウンドかの判定 + LoginActivity.appBackGroundStatus = false } override fun onDestroyView() { @@ -116,6 +119,8 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { } catch (e: Exception) { Log.e(TAG, "${e.message}") } + // バックグラウンドかの情報 + LoginActivity.appBackGroundStatus = true } @SuppressLint("ClickableViewAccessibility") diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt index 536ab6c1..a2d1ea74 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt @@ -46,5 +46,7 @@ class LoginActivity : AppCompatActivity() { fun reauth(context: Context) = context.startActivity(Intent(context, LoginActivity::class.java) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) .setAction(ACTION_REAUTH)) + // アプリがバックグラウンドか + var appBackGroundStatus = false } } diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt index 0b4d81da..209318a5 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt @@ -74,11 +74,15 @@ class LoginFragment: Fragment() { relogin() } else { // 過去に認証したときの authState を取得 - if (mOAuthService.getAuthState(savedInstanceState).isAuthorized) { + if (mOAuthService.getAuthState(savedInstanceState).isAuthorized && LoginActivity.appBackGroundStatus) { + Log.d(TAG, "authState.isAuthorized == true") + Log.d(TAG,"appBackGroundStatus == true") + disableLogin() + onSuccessAuth() + } else if (mOAuthService.getAuthState(savedInstanceState).isAuthorized) { // 認証済みの場合、生体/デバイス認証を実行 Log.d(TAG, "authState.isAuthorized == true") if (BiometricPrompt.anyAuthenticationAvailable(this.requireContext())) { - disableLogin() Handler().postDelayed({ startBiometricPrompt() }, 0) @@ -243,7 +247,7 @@ class LoginFragment: Fragment() { Log.d(TAG, "call startBiometricPrompt()") BiometricPrompt.auth(this.requireActivity()) { when (it) { - BiometricPrompt.Result.Success -> onSuccessBiometricAuth() + BiometricPrompt.Result.Success -> onSuccessAuth() BiometricPrompt.Result.UnsupportedHardware -> onFailureAuthBiometricPrompt(R.string.auth_biometric_unsupported_hardware) BiometricPrompt.Result.NotHasBiometricsOnHardware -> onFailureAuthBiometricPrompt(R.string.auth_biometric_not_has_biometrics_on_hardware) BiometricPrompt.Result.Cancel -> onFailureAuthBiometricPrompt(R.string.auth_biometric_cancel) @@ -252,9 +256,9 @@ class LoginFragment: Fragment() { } } - private fun onSuccessBiometricAuth() { - // 生体認証に成功した場合、トークンを更新 - Log.d(TAG, "call onSuccessBiometricAuth()") + private fun onSuccessAuth() { + // トークンを更新 + Log.d(TAG, "call onSuccessAuth()") mOAuthService.performAction(AuthState.AuthStateAction() { accessToken, _, ex -> if (ex != null) { -- GitLab From 565dcb7d5d1bbd88959225db614e1a34ce5a3631 Mon Sep 17 00:00:00 2001 From: S-6203-ATLED Date: Tue, 14 Jun 2022 14:21:41 +0900 Subject: [PATCH 2/5] =?UTF-8?q?#92=20=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=BF=E3=83=83=E3=83=97=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E5=87=A6=E7=90=86=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt index 209318a5..2b97cc7f 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt @@ -83,6 +83,7 @@ class LoginFragment: Fragment() { // 認証済みの場合、生体/デバイス認証を実行 Log.d(TAG, "authState.isAuthorized == true") if (BiometricPrompt.anyAuthenticationAvailable(this.requireContext())) { + disableLogin() Handler().postDelayed({ startBiometricPrompt() }, 0) -- GitLab From e80f52847bd40136303574b16528d68f2fff56d9 Mon Sep 17 00:00:00 2001 From: S-6203-ATLED Date: Wed, 15 Jun 2022 15:52:22 +0900 Subject: [PATCH 3/5] =?UTF-8?q?#92=20=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=BF=E3=83=83=E3=83=97=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E5=87=A6=E7=90=86=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../atled/agileworks/model/AppRepository.kt | 8 +++++ .../ui/documentweb/DocumentWebFragment.kt | 5 +-- .../agileworks/view/ui/login/LoginActivity.kt | 2 -- .../agileworks/view/ui/login/LoginFragment.kt | 31 ++++++++++--------- 4 files changed, 28 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/jp/atled/agileworks/model/AppRepository.kt diff --git a/app/src/main/java/jp/atled/agileworks/model/AppRepository.kt b/app/src/main/java/jp/atled/agileworks/model/AppRepository.kt new file mode 100644 index 00000000..d7596068 --- /dev/null +++ b/app/src/main/java/jp/atled/agileworks/model/AppRepository.kt @@ -0,0 +1,8 @@ +package jp.atled.agileworks.model + +class AppRepository { + companion object { + // アプリがバックグラウンドか + var appBackGroundStatus = false + } +} \ No newline at end of file diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt index 04dbf00e..342fb41f 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt @@ -20,6 +20,7 @@ import androidx.lifecycle.ViewModelProvider import jp.atled.agileworks.R import jp.atled.agileworks.AwApp import jp.atled.agileworks.databinding.FragmentWebviewDetailBinding +import jp.atled.agileworks.model.AppRepository import jp.atled.agileworks.model.SessionRepository import jp.atled.agileworks.view.ui.login.LoginActivity import kotlinx.android.synthetic.main.fragment_webview_detail.* @@ -91,7 +92,7 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { webShare.presenter.updateAutoReloadState(true) // アプリがバックグラウンドかの判定 - LoginActivity.appBackGroundStatus = false + AppRepository.appBackGroundStatus = false } override fun onDestroyView() { @@ -120,7 +121,7 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { Log.e(TAG, "${e.message}") } // バックグラウンドかの情報 - LoginActivity.appBackGroundStatus = true + AppRepository.appBackGroundStatus = true } @SuppressLint("ClickableViewAccessibility") diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt index a2d1ea74..536ab6c1 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginActivity.kt @@ -46,7 +46,5 @@ class LoginActivity : AppCompatActivity() { fun reauth(context: Context) = context.startActivity(Intent(context, LoginActivity::class.java) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) .setAction(ACTION_REAUTH)) - // アプリがバックグラウンドか - var appBackGroundStatus = false } } diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt index 2b97cc7f..3303ed98 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt @@ -35,6 +35,7 @@ import com.journeyapps.barcodescanner.ScanOptions import com.journeyapps.barcodescanner.ScanIntentResult import jp.atled.agileworks.model.* +import jp.atled.agileworks.model.AppRepository class LoginFragment: Fragment() { @@ -74,22 +75,24 @@ class LoginFragment: Fragment() { relogin() } else { // 過去に認証したときの authState を取得 - if (mOAuthService.getAuthState(savedInstanceState).isAuthorized && LoginActivity.appBackGroundStatus) { - Log.d(TAG, "authState.isAuthorized == true") - Log.d(TAG,"appBackGroundStatus == true") - disableLogin() - onSuccessAuth() - } else if (mOAuthService.getAuthState(savedInstanceState).isAuthorized) { - // 認証済みの場合、生体/デバイス認証を実行 - Log.d(TAG, "authState.isAuthorized == true") - if (BiometricPrompt.anyAuthenticationAvailable(this.requireContext())) { + if (mOAuthService.getAuthState(savedInstanceState).isAuthorized) { + if (AppRepository.appBackGroundStatus) { + Log.d(TAG, "authState.isAuthorized == true") + Log.d(TAG,"appBackGroundStatus == true") disableLogin() - Handler().postDelayed({ - startBiometricPrompt() - }, 0) + onSuccessAuth() } else { - // 認証設定が全くされていない場合、一旦ログアウトしてから同じサーバ・ドメインで OAuth2 認証を再実行 - relogin() + // 認証済みの場合、生体/デバイス認証を実行 + Log.d(TAG, "authState.isAuthorized == true") + if (BiometricPrompt.anyAuthenticationAvailable(this.requireContext())) { + disableLogin() + Handler().postDelayed({ + startBiometricPrompt() + }, 0) + } else { + // 認証設定が全くされていない場合、一旦ログアウトしてから同じサーバ・ドメインで OAuth2 認証を再実行 + relogin() + } } } else { // 認証されていない場合、ログイン画面を表示 -- GitLab From c68373577f026cf22c0858911118527c3cfe9c26 Mon Sep 17 00:00:00 2001 From: S-6203-ATLED Date: Thu, 16 Jun 2022 11:43:40 +0900 Subject: [PATCH 4/5] =?UTF-8?q?#92=20=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=BF=E3=83=83=E3=83=97=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E5=87=A6=E7=90=86=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/jp/atled/agileworks/model/AppRepository.kt | 11 ++++++++++- .../jp/atled/agileworks/view/base/BaseViewModel.kt | 10 ++++++++++ .../view/ui/documentweb/DocumentWebFragment.kt | 7 ++++--- .../atled/agileworks/view/ui/login/LoginFragment.kt | 3 ++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/jp/atled/agileworks/model/AppRepository.kt b/app/src/main/java/jp/atled/agileworks/model/AppRepository.kt index d7596068..87de81df 100644 --- a/app/src/main/java/jp/atled/agileworks/model/AppRepository.kt +++ b/app/src/main/java/jp/atled/agileworks/model/AppRepository.kt @@ -1,8 +1,17 @@ package jp.atled.agileworks.model class AppRepository { + fun getAppBackGroundStatus(): Boolean { + return appBackGroundStatus + } + + fun setAppBackGroundStatus(status: Boolean) { + appBackGroundStatus = status + } + companion object { + fun getInstance() = AppRepository() // アプリがバックグラウンドか - var appBackGroundStatus = false + private var appBackGroundStatus = false } } \ No newline at end of file diff --git a/app/src/main/java/jp/atled/agileworks/view/base/BaseViewModel.kt b/app/src/main/java/jp/atled/agileworks/view/base/BaseViewModel.kt index 31e7adec..13d7ef43 100644 --- a/app/src/main/java/jp/atled/agileworks/view/base/BaseViewModel.kt +++ b/app/src/main/java/jp/atled/agileworks/view/base/BaseViewModel.kt @@ -2,10 +2,20 @@ package jp.atled.agileworks.view.base import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import jp.atled.agileworks.model.AppRepository open class BaseViewModel : ViewModel() { val dataLoading = MutableLiveData().apply { value = false } val logout = MutableLiveData() + + fun getAppBackGroundStatus(): Boolean { + return AppRepository.getInstance().getAppBackGroundStatus() + } + + fun setAppBackGroundStatus(status: Boolean) { + AppRepository.getInstance().setAppBackGroundStatus(status) + } + } \ No newline at end of file diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt index 342fb41f..6e861f1e 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt @@ -91,8 +91,9 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { displayDisconnectViewState() webShare.presenter.updateAutoReloadState(true) - // アプリがバックグラウンドかの判定 - AppRepository.appBackGroundStatus = false + + // アプリがバックグラウンドかの情報 + viewDataBinding?.viewModel?.setAppBackGroundStatus(false) } override fun onDestroyView() { @@ -121,7 +122,7 @@ class DocumentWebFragment : Fragment(), DocumentWebPresenter { Log.e(TAG, "${e.message}") } // バックグラウンドかの情報 - AppRepository.appBackGroundStatus = true + viewDataBinding?.viewModel?.setAppBackGroundStatus(true) } @SuppressLint("ClickableViewAccessibility") diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt index 3303ed98..06cf479e 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt @@ -36,6 +36,7 @@ import com.journeyapps.barcodescanner.ScanOptions import com.journeyapps.barcodescanner.ScanIntentResult import jp.atled.agileworks.model.* import jp.atled.agileworks.model.AppRepository +import jp.atled.agileworks.view.base.BaseViewModel class LoginFragment: Fragment() { @@ -76,7 +77,7 @@ class LoginFragment: Fragment() { } else { // 過去に認証したときの authState を取得 if (mOAuthService.getAuthState(savedInstanceState).isAuthorized) { - if (AppRepository.appBackGroundStatus) { + if (binding.viewmodel?.getAppBackGroundStatus() == true) { Log.d(TAG, "authState.isAuthorized == true") Log.d(TAG,"appBackGroundStatus == true") disableLogin() -- GitLab From 1995daa087e91404c6753043849cb072e5e98b65 Mon Sep 17 00:00:00 2001 From: S-6203-ATLED Date: Thu, 16 Jun 2022 17:01:08 +0900 Subject: [PATCH 5/5] =?UTF-8?q?#92=20=E3=82=A6=E3=82=A3=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=82=BF=E3=83=83=E3=83=97=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E5=87=A6=E7=90=86=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agileworks/view/ui/documentweb/DocumentWebFragment.kt | 4 ---- .../java/jp/atled/agileworks/view/ui/login/LoginFragment.kt | 2 -- 2 files changed, 6 deletions(-) diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt index 6e861f1e..f4f7cb31 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/documentweb/DocumentWebFragment.kt @@ -12,17 +12,13 @@ import android.webkit.CookieManager import android.webkit.WebView import android.widget.Button import android.widget.RelativeLayout -import android.widget.TextView -import android.widget.Toolbar import androidx.core.view.GestureDetectorCompat import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import jp.atled.agileworks.R import jp.atled.agileworks.AwApp import jp.atled.agileworks.databinding.FragmentWebviewDetailBinding -import jp.atled.agileworks.model.AppRepository import jp.atled.agileworks.model.SessionRepository -import jp.atled.agileworks.view.ui.login.LoginActivity import kotlinx.android.synthetic.main.fragment_webview_detail.* import java.lang.Exception import kotlin.math.absoluteValue diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt index 06cf479e..53137cb0 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt @@ -35,8 +35,6 @@ import com.journeyapps.barcodescanner.ScanOptions import com.journeyapps.barcodescanner.ScanIntentResult import jp.atled.agileworks.model.* -import jp.atled.agileworks.model.AppRepository -import jp.atled.agileworks.view.base.BaseViewModel class LoginFragment: Fragment() { -- GitLab