reset password procedure

This commit is contained in:
Milos Kozak 2021-09-20 14:13:56 +02:00
parent 4b6d4d287c
commit 72a309a055
6 changed files with 72 additions and 5 deletions

View file

@ -32,6 +32,7 @@ import info.nightscout.androidaps.receivers.TimeDateOrTZChangeReceiver
import info.nightscout.androidaps.utils.ActivityMonitor
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.locale.LocaleHelper.update
import info.nightscout.androidaps.utils.protection.PasswordCheck
import info.nightscout.androidaps.utils.sharedPreferences.SP
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.rxkotlin.plusAssign
@ -56,6 +57,7 @@ class MainApp : DaggerApplication() {
@Inject lateinit var dateUtil: DateUtil
@Inject lateinit var staticInjector: StaticInjector// TODO avoid , here fake only to initialize
@Inject lateinit var uel: UserEntryLogger
@Inject lateinit var passwordCheck: PasswordCheck
override fun onCreate() {
super.onCreate()
@ -87,6 +89,7 @@ class MainApp : DaggerApplication() {
keepAliveManager.setAlarm(this)
doMigrations()
uel.log(UserEntry.Action.START_AAPS, UserEntry.Sources.Aaps)
passwordCheck.passwordResetCheck(this)
}
private fun doMigrations() {

View file

@ -109,5 +109,6 @@ class VirtualPumpFragment : DaggerFragment() {
binding.type.text = pumpType?.description
binding.typeDef.text = pumpType?.getFullDescription(resourceHelper.gs(R.string.virtualpump_pump_def), pumpType.hasExtendedBasals(), resourceHelper)
binding.serialNumber.text = virtualPumpPlugin.serialNumber()
}
}

View file

@ -234,6 +234,51 @@
</LinearLayout>
<!-- Pump Serial -->
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginBottom="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:background="@color/list_delimiter" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:paddingRight="5dp"
android:text="@string/serialnumber"
android:textSize="14sp" />
<TextView
android:layout_width="5dp"
android:layout_height="wrap_content"
android:layout_weight="0"
android:gravity="center_horizontal"
android:paddingEnd="2dp"
android:paddingStart="2dp"
android:text=":"
android:textSize="14sp" />
<TextView
android:id="@+id/serial_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="start"
android:paddingLeft="5dp"
android:textSize="14sp" />
</LinearLayout>
<!-- Pump Type -->
<View
android:layout_width="fill_parent"
@ -279,7 +324,7 @@
</LinearLayout>
<!-- Pump Type -->
<!-- Pump Definition -->
<View
android:layout_width="fill_parent"
android:layout_height="2dip"

View file

@ -8,10 +8,13 @@ import android.widget.EditText
import android.widget.TextView
import androidx.annotation.StringRes
import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.interfaces.ActivePlugin
import info.nightscout.androidaps.plugins.general.maintenance.PrefFileListProvider
import info.nightscout.androidaps.utils.CryptoUtil
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.alertDialogs.AlertDialogHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import java.io.File
import javax.inject.Inject
import javax.inject.Singleton
@ -20,8 +23,10 @@ const val AUTOFILL_HINT_NEW_PASSWORD = "newPassword"
@Singleton
class PasswordCheck @Inject constructor(
val sp: SP,
private val cryptoUtil: CryptoUtil
private val sp: SP,
private val cryptoUtil: CryptoUtil,
private val fileListProvider: PrefFileListProvider,
private val activePlugin: ActivePlugin
) {
/**
@ -159,4 +164,18 @@ class PasswordCheck @Inject constructor(
alertDialogBuilder.create().show()
}
/**
* Check for existing PasswordReset file and
* reset password to SN of active pump if file exists
*/
fun passwordResetCheck(context: Context) {
val passwordReset = File(fileListProvider.ensureExtraDirExists(), "PasswordReset")
if (passwordReset.exists()) {
val sn = activePlugin.activePump.serialNumber()
sp.putString(R.string.key_master_password, cryptoUtil.hashPassword(sn))
passwordReset.delete()
ToastUtils.okToast(context, context.getString(R.string.password_set))
}
}
}

View file

@ -144,7 +144,6 @@
<string name="extended_bolus">Extended bolus</string>
<string name="pump_time_updated">Pump time updated</string>
<string name="exit">Exit</string>
<string name="serial_number">Serial number</string>
<string name="removerecord">Remove record</string>
<string name="loopisdisabled">Loop is disabled</string>
<string name="alarm">Alarm</string>

View file

@ -14,7 +14,7 @@
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="16sp"
android:text="@string/serial_number" />
android:text="@string/serialnumber" />
<TextView
android:id="@+id/serial_number"