mirror of
https://github.com/home-assistant/android
synced 2024-09-19 16:11:37 +00:00
Fix Security Bypass (#935)
* Hide timeout when it isn't being used. * Fix #925 * ktlint
This commit is contained in:
parent
71d764cf40
commit
3a6291c38a
|
@ -65,11 +65,12 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView {
|
||||||
isValid
|
isValid
|
||||||
}
|
}
|
||||||
|
|
||||||
val onChangeBiometricValidator = Preference.OnPreferenceChangeListener { _, newValue ->
|
findPreference<SwitchPreference>("app_lock")?.setOnPreferenceChangeListener { _, newValue ->
|
||||||
var isValid: Boolean
|
var isValid: Boolean
|
||||||
if (newValue == false)
|
if (newValue == false) {
|
||||||
isValid = true
|
isValid = true
|
||||||
else {
|
findPreference<EditTextPreference>("session_timeout")?.isVisible = false
|
||||||
|
} else {
|
||||||
isValid = true
|
isValid = true
|
||||||
if (BiometricManager.from(requireActivity()).canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
|
if (BiometricManager.from(requireActivity()).canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
|
||||||
setLock = true
|
setLock = true
|
||||||
|
@ -87,6 +88,13 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView {
|
||||||
isValid
|
isValid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
findPreference<EditTextPreference>("session_timeout")?.let { pref ->
|
||||||
|
pref.setOnBindEditTextListener {
|
||||||
|
it.inputType = InputType.TYPE_CLASS_NUMBER
|
||||||
|
}
|
||||||
|
pref.isVisible = findPreference<SwitchPreference>("app_lock")?.isChecked == true
|
||||||
|
}
|
||||||
|
|
||||||
findPreference<Preference>("nfc_tags")?.let {
|
findPreference<Preference>("nfc_tags")?.let {
|
||||||
it.isVisible = presenter.nfcEnabled()
|
it.isVisible = presenter.nfcEnabled()
|
||||||
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
|
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
|
||||||
|
@ -95,10 +103,6 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
findPreference<EditTextPreference>("session_timeout")?.setOnBindEditTextListener {
|
|
||||||
it.inputType = InputType.TYPE_CLASS_NUMBER
|
|
||||||
}
|
|
||||||
|
|
||||||
removeSystemFromThemesIfNeeded()
|
removeSystemFromThemesIfNeeded()
|
||||||
|
|
||||||
findPreference<EditTextPreference>("connection_internal")?.onPreferenceChangeListener =
|
findPreference<EditTextPreference>("connection_internal")?.onPreferenceChangeListener =
|
||||||
|
@ -107,9 +111,6 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView {
|
||||||
findPreference<EditTextPreference>("connection_external")?.onPreferenceChangeListener =
|
findPreference<EditTextPreference>("connection_external")?.onPreferenceChangeListener =
|
||||||
onChangeUrlValidator
|
onChangeUrlValidator
|
||||||
|
|
||||||
findPreference<SwitchPreference>("app_lock")?.onPreferenceChangeListener =
|
|
||||||
onChangeBiometricValidator
|
|
||||||
|
|
||||||
findPreference<Preference>("sensors")?.setOnPreferenceClickListener {
|
findPreference<Preference>("sensors")?.setOnPreferenceClickListener {
|
||||||
parentFragmentManager
|
parentFragmentManager
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
|
@ -171,8 +172,10 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun authenticationResult(result: Int) {
|
private fun authenticationResult(result: Int) {
|
||||||
|
val success = result == Authenticator.SUCCESS
|
||||||
val switchLock = findPreference<SwitchPreference>("app_lock")
|
val switchLock = findPreference<SwitchPreference>("app_lock")
|
||||||
switchLock?.isChecked = result == Authenticator.SUCCESS
|
switchLock?.isChecked = success
|
||||||
|
findPreference<EditTextPreference>("session_timeout")?.isVisible = success
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun removeSystemFromThemesIfNeeded() {
|
private fun removeSystemFromThemesIfNeeded() {
|
||||||
|
|
|
@ -155,8 +155,10 @@ class WebViewActivity : AppCompatActivity(), io.homeassistant.companion.android.
|
||||||
exoToggleMute()
|
exoToggleMute()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
if (!presenter.isLockEnabled())
|
if (!presenter.isLockEnabled()) {
|
||||||
blurView.setBlurEnabled(false)
|
blurView.setBlurEnabled(false)
|
||||||
|
unlocked = true
|
||||||
|
}
|
||||||
|
|
||||||
authenticator = Authenticator(this, this, ::authenticationResult)
|
authenticator = Authenticator(this, this, ::authenticationResult)
|
||||||
|
|
||||||
|
@ -164,6 +166,10 @@ class WebViewActivity : AppCompatActivity(), io.homeassistant.companion.android.
|
||||||
|
|
||||||
webView = findViewById(R.id.webview)
|
webView = findViewById(R.id.webview)
|
||||||
webView.apply {
|
webView.apply {
|
||||||
|
setOnTouchListener { _, _ ->
|
||||||
|
return@setOnTouchListener !unlocked
|
||||||
|
}
|
||||||
|
|
||||||
settings.javaScriptEnabled = true
|
settings.javaScriptEnabled = true
|
||||||
settings.domStorageEnabled = true
|
settings.domStorageEnabled = true
|
||||||
webViewClient = object : WebViewClient() {
|
webViewClient = object : WebViewClient() {
|
||||||
|
@ -400,6 +406,12 @@ class WebViewActivity : AppCompatActivity(), io.homeassistant.companion.android.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
if (!unlocked && !presenter.isLockEnabled())
|
||||||
|
unlocked = true
|
||||||
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
if (requestCode == NFC_COMPLETE && resultCode != -1) {
|
if (requestCode == NFC_COMPLETE && resultCode != -1) {
|
||||||
|
@ -547,7 +559,9 @@ class WebViewActivity : AppCompatActivity(), io.homeassistant.companion.android.
|
||||||
if ((System.currentTimeMillis() > presenter.getSessionExpireMillis())) {
|
if ((System.currentTimeMillis() > presenter.getSessionExpireMillis())) {
|
||||||
blurView.setBlurEnabled(true)
|
blurView.setBlurEnabled(true)
|
||||||
authenticator.authenticate()
|
authenticator.authenticate()
|
||||||
} else blurView.setBlurEnabled(false)
|
} else {
|
||||||
|
blurView.setBlurEnabled(false)
|
||||||
|
}
|
||||||
|
|
||||||
presenter.onViewReady(intent.getStringExtra(EXTRA_PATH))
|
presenter.onViewReady(intent.getStringExtra(EXTRA_PATH))
|
||||||
intent.removeExtra(EXTRA_PATH)
|
intent.removeExtra(EXTRA_PATH)
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
android:key="session_timeout"
|
android:key="session_timeout"
|
||||||
android:icon="@drawable/ic_timeout"
|
android:icon="@drawable/ic_timeout"
|
||||||
android:title="@string/session_timeout_title"
|
android:title="@string/session_timeout_title"
|
||||||
|
app:isPreferenceVisible="false"
|
||||||
app:useSimpleSummaryProvider="true"/>
|
app:useSimpleSummaryProvider="true"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
|
|
Loading…
Reference in a new issue