From 9a1a54a6fcfa6fd6cf142f2af9804375255d14cf Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Wed, 2 Oct 2019 11:00:45 +0530 Subject: Initial biometric authentication support (#541) * [WIP] Initial biometric authentication support * Redirect decryption app shortcut to go through LaunchActivity * UserPreference: Clear existing shortcuts when toggling password auth Clears out any auth-bypassed entries that exist * Fix hilarious copypasta derp Signed-off-by: Harsh Shandilya --- .../main/java/com/zeapo/pwdstore/LaunchActivity.kt | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 app/src/main/java/com/zeapo/pwdstore/LaunchActivity.kt (limited to 'app/src/main/java/com/zeapo/pwdstore/LaunchActivity.kt') diff --git a/app/src/main/java/com/zeapo/pwdstore/LaunchActivity.kt b/app/src/main/java/com/zeapo/pwdstore/LaunchActivity.kt new file mode 100644 index 00000000..8f607ee0 --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/LaunchActivity.kt @@ -0,0 +1,49 @@ +package com.zeapo.pwdstore + +import android.content.Intent +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.preference.PreferenceManager +import com.zeapo.pwdstore.crypto.PgpActivity +import com.zeapo.pwdstore.utils.auth.AuthenticationResult +import com.zeapo.pwdstore.utils.auth.Authenticator + +class LaunchActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val prefs = PreferenceManager.getDefaultSharedPreferences(this) + if (prefs.getBoolean("biometric_auth", false)) { + Authenticator(this) { + when (it) { + is AuthenticationResult.Success -> { + startTargetActivity() + } + is AuthenticationResult.UnrecoverableError -> { + finish() + } + else -> { + } + } + }.authenticate() + } else { + startTargetActivity() + } + } + + private fun startTargetActivity() { + if (intent?.getStringExtra("OPERATION") == "DECRYPT") { + val decryptIntent = Intent(this, PgpActivity::class.java) + decryptIntent.putExtra("NAME", intent.getStringExtra("NAME")) + decryptIntent.putExtra("FILE_PATH", intent.getStringExtra("FILE_PATH")) + decryptIntent.putExtra("REPO_PATH", intent.getStringExtra("REPO_PATH")) + decryptIntent.putExtra("LAST_CHANGED_TIMESTAMP", intent.getLongExtra("LAST_CHANGED_TIMESTAMP", 0L)) + decryptIntent.putExtra("OPERATION", "DECRYPT") + startActivity(decryptIntent) + }else { + startActivity(Intent(this, PasswordStore::class.java)) + } + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out) + finish() + } +} -- cgit v1.2.3