mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-24 10:28:50 +01:00
Confirm PIN/password with user before persisting it
This commit is contained in:
parent
0aaeddb544
commit
6dd734d263
5 changed files with 133 additions and 0 deletions
|
@ -440,7 +440,9 @@
|
|||
"settingsAppLockDescription": "If enabled, you will be asked to authenticate when you open the app",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle": "Pick the fallback when biometric is not available",
|
||||
"settingsAppLockSetupPinDialogTitle": "Set the PIN to unlock app",
|
||||
"settingsAppLockConfirmPinDialogTitle": "Input the same PIN again",
|
||||
"settingsAppLockSetupPasswordDialogTitle": "Set the password to unlock app",
|
||||
"settingsAppLockConfirmPasswordDialogTitle": "Input the same password again",
|
||||
"settingsExperimentalTitle": "Experimental",
|
||||
"settingsExperimentalDescription": "Features that are not ready for everyday use",
|
||||
"settingsExpertTitle": "Advanced",
|
||||
|
|
|
@ -34,7 +34,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"settingsAboutSectionTitle",
|
||||
"settingsVersionTitle",
|
||||
"settingsServerVersionTitle",
|
||||
|
@ -260,7 +262,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"appLockUnlockHint",
|
||||
"appLockUnlockWrongPassword",
|
||||
"enabledText",
|
||||
|
@ -283,7 +287,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"fileLastSharedByOthersDescription",
|
||||
"multipleFilesLinkShareDialogContent",
|
||||
"createShareProgressText",
|
||||
|
@ -348,7 +354,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"settingsExpertTitle",
|
||||
"settingsExpertWarningText",
|
||||
"settingsClearCacheDatabaseTitle",
|
||||
|
@ -449,7 +457,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"appLockUnlockHint",
|
||||
"appLockUnlockWrongPassword",
|
||||
"enabledText",
|
||||
|
@ -467,7 +477,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"appLockUnlockHint",
|
||||
"appLockUnlockWrongPassword",
|
||||
"enabledText",
|
||||
|
@ -485,7 +497,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"appLockUnlockHint",
|
||||
"appLockUnlockWrongPassword",
|
||||
"enabledText",
|
||||
|
@ -505,7 +519,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"unmuteTooltip",
|
||||
"slideshowTooltip",
|
||||
"enhanceColorPopTitle",
|
||||
|
@ -602,7 +618,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"settingsExperimentalTitle",
|
||||
"settingsExperimentalDescription",
|
||||
"settingsExpertTitle",
|
||||
|
@ -894,7 +912,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"enhanceColorPopTitle",
|
||||
"imageEditTransformOrientationClockwise",
|
||||
"imageEditTransformOrientationCounterclockwise",
|
||||
|
@ -920,7 +940,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"settingsServerVersionTitle",
|
||||
"searchLandingPeopleListEmptyText2",
|
||||
"createCollectionFailureNotification",
|
||||
|
@ -953,7 +975,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"appLockUnlockHint",
|
||||
"appLockUnlockWrongPassword",
|
||||
"enabledText",
|
||||
|
@ -971,7 +995,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"appLockUnlockHint",
|
||||
"appLockUnlockWrongPassword",
|
||||
"enabledText",
|
||||
|
@ -1018,7 +1044,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"settingsExpertTitle",
|
||||
"settingsExpertWarningText",
|
||||
"settingsClearCacheDatabaseTitle",
|
||||
|
@ -1161,7 +1189,9 @@
|
|||
"settingsAppLockDescription",
|
||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||
"settingsAppLockSetupPinDialogTitle",
|
||||
"settingsAppLockConfirmPinDialogTitle",
|
||||
"settingsAppLockSetupPasswordDialogTitle",
|
||||
"settingsAppLockConfirmPasswordDialogTitle",
|
||||
"settingsExpertTitle",
|
||||
"settingsExpertWarningText",
|
||||
"settingsClearCacheDatabaseTitle",
|
||||
|
|
|
@ -94,6 +94,47 @@ class _WrappedProtectedPagePasswordSetupDialog extends StatelessWidget {
|
|||
}
|
||||
}
|
||||
|
||||
class ProtectedPagePasswordConfirmDialog extends StatelessWidget {
|
||||
const ProtectedPagePasswordConfirmDialog({
|
||||
super.key,
|
||||
required this.password,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider(
|
||||
create: (context) => _Bloc(
|
||||
password: password,
|
||||
),
|
||||
child: _WrappedProtectedPagePasswordConfirmDialog(),
|
||||
);
|
||||
}
|
||||
|
||||
final CiString password;
|
||||
}
|
||||
|
||||
class _WrappedProtectedPagePasswordConfirmDialog extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MultiBlocListener(
|
||||
listeners: [
|
||||
_BlocListenerT(
|
||||
selector: (state) => state.isAuthorized,
|
||||
listener: (context, isAuthorized) {
|
||||
if (isAuthorized.value == true) {
|
||||
Navigator.of(context).pop(true);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
child: AlertDialog(
|
||||
title: Text(L10n.global().settingsAppLockConfirmPasswordDialogTitle),
|
||||
content: const _DialogBody(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// typedef _BlocBuilder = BlocBuilder<_Bloc, _State>;
|
||||
// typedef _BlocListener = BlocListener<_Bloc, _State>;
|
||||
typedef _BlocListenerT<T> = BlocListenerT<_Bloc, _State, T>;
|
||||
|
|
|
@ -107,6 +107,52 @@ class _WrappedProtectedPagePinSetupDialog extends StatelessWidget {
|
|||
}
|
||||
}
|
||||
|
||||
class ProtectedPagePinConfirmDialog extends StatelessWidget {
|
||||
const ProtectedPagePinConfirmDialog({
|
||||
super.key,
|
||||
required this.pin,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocProvider(
|
||||
create: (context) => _Bloc(
|
||||
pin: pin,
|
||||
removeItemBuilder: (_, animation, value) => _RemoveItem(
|
||||
animation: animation,
|
||||
value: value,
|
||||
),
|
||||
),
|
||||
child: _WrappedProtectedPagePinConfirmDialog(),
|
||||
);
|
||||
}
|
||||
|
||||
final CiString pin;
|
||||
}
|
||||
|
||||
class _WrappedProtectedPagePinConfirmDialog extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MultiBlocListener(
|
||||
listeners: [
|
||||
_BlocListenerT(
|
||||
selector: (state) => state.isAuthorized,
|
||||
listener: (context, isAuthorized) {
|
||||
if (isAuthorized) {
|
||||
Navigator.of(context).pop(true);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
child: AlertDialog(
|
||||
title: Text(L10n.global().settingsAppLockConfirmPinDialogTitle),
|
||||
scrollable: true,
|
||||
content: const _DialogBody(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// typedef _BlocBuilder = BlocBuilder<_Bloc, _State>;
|
||||
// typedef _BlocListener = BlocListener<_Bloc, _State>;
|
||||
typedef _BlocListenerT<T> = BlocListenerT<_Bloc, _State, T>;
|
||||
|
|
|
@ -258,6 +258,13 @@ class _WrappedAppLockSettings extends StatelessWidget {
|
|||
if (result == null) {
|
||||
return null;
|
||||
}
|
||||
final isConfirmed = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (_) => ProtectedPagePinConfirmDialog(pin: result),
|
||||
);
|
||||
if (isConfirmed != true) {
|
||||
return null;
|
||||
}
|
||||
return context.bloc.securePrefController.setProtectedPageAuthPin(result);
|
||||
}
|
||||
|
||||
|
@ -269,6 +276,13 @@ class _WrappedAppLockSettings extends StatelessWidget {
|
|||
if (result == null) {
|
||||
return null;
|
||||
}
|
||||
final isConfirmed = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (_) => ProtectedPagePasswordConfirmDialog(password: result),
|
||||
);
|
||||
if (isConfirmed != true) {
|
||||
return null;
|
||||
}
|
||||
return context.bloc.securePrefController
|
||||
.setProtectedPageAuthPassword(result);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue