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",
|
"settingsAppLockDescription": "If enabled, you will be asked to authenticate when you open the app",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle": "Pick the fallback when biometric is not available",
|
"settingsAppLockSetupBiometricFallbackDialogTitle": "Pick the fallback when biometric is not available",
|
||||||
"settingsAppLockSetupPinDialogTitle": "Set the PIN to unlock app",
|
"settingsAppLockSetupPinDialogTitle": "Set the PIN to unlock app",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle": "Input the same PIN again",
|
||||||
"settingsAppLockSetupPasswordDialogTitle": "Set the password to unlock app",
|
"settingsAppLockSetupPasswordDialogTitle": "Set the password to unlock app",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle": "Input the same password again",
|
||||||
"settingsExperimentalTitle": "Experimental",
|
"settingsExperimentalTitle": "Experimental",
|
||||||
"settingsExperimentalDescription": "Features that are not ready for everyday use",
|
"settingsExperimentalDescription": "Features that are not ready for everyday use",
|
||||||
"settingsExpertTitle": "Advanced",
|
"settingsExpertTitle": "Advanced",
|
||||||
|
|
|
@ -34,7 +34,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"settingsAboutSectionTitle",
|
"settingsAboutSectionTitle",
|
||||||
"settingsVersionTitle",
|
"settingsVersionTitle",
|
||||||
"settingsServerVersionTitle",
|
"settingsServerVersionTitle",
|
||||||
|
@ -260,7 +262,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"appLockUnlockHint",
|
"appLockUnlockHint",
|
||||||
"appLockUnlockWrongPassword",
|
"appLockUnlockWrongPassword",
|
||||||
"enabledText",
|
"enabledText",
|
||||||
|
@ -283,7 +287,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"fileLastSharedByOthersDescription",
|
"fileLastSharedByOthersDescription",
|
||||||
"multipleFilesLinkShareDialogContent",
|
"multipleFilesLinkShareDialogContent",
|
||||||
"createShareProgressText",
|
"createShareProgressText",
|
||||||
|
@ -348,7 +354,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"settingsExpertTitle",
|
"settingsExpertTitle",
|
||||||
"settingsExpertWarningText",
|
"settingsExpertWarningText",
|
||||||
"settingsClearCacheDatabaseTitle",
|
"settingsClearCacheDatabaseTitle",
|
||||||
|
@ -449,7 +457,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"appLockUnlockHint",
|
"appLockUnlockHint",
|
||||||
"appLockUnlockWrongPassword",
|
"appLockUnlockWrongPassword",
|
||||||
"enabledText",
|
"enabledText",
|
||||||
|
@ -467,7 +477,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"appLockUnlockHint",
|
"appLockUnlockHint",
|
||||||
"appLockUnlockWrongPassword",
|
"appLockUnlockWrongPassword",
|
||||||
"enabledText",
|
"enabledText",
|
||||||
|
@ -485,7 +497,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"appLockUnlockHint",
|
"appLockUnlockHint",
|
||||||
"appLockUnlockWrongPassword",
|
"appLockUnlockWrongPassword",
|
||||||
"enabledText",
|
"enabledText",
|
||||||
|
@ -505,7 +519,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"unmuteTooltip",
|
"unmuteTooltip",
|
||||||
"slideshowTooltip",
|
"slideshowTooltip",
|
||||||
"enhanceColorPopTitle",
|
"enhanceColorPopTitle",
|
||||||
|
@ -602,7 +618,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"settingsExperimentalTitle",
|
"settingsExperimentalTitle",
|
||||||
"settingsExperimentalDescription",
|
"settingsExperimentalDescription",
|
||||||
"settingsExpertTitle",
|
"settingsExpertTitle",
|
||||||
|
@ -894,7 +912,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"enhanceColorPopTitle",
|
"enhanceColorPopTitle",
|
||||||
"imageEditTransformOrientationClockwise",
|
"imageEditTransformOrientationClockwise",
|
||||||
"imageEditTransformOrientationCounterclockwise",
|
"imageEditTransformOrientationCounterclockwise",
|
||||||
|
@ -920,7 +940,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"settingsServerVersionTitle",
|
"settingsServerVersionTitle",
|
||||||
"searchLandingPeopleListEmptyText2",
|
"searchLandingPeopleListEmptyText2",
|
||||||
"createCollectionFailureNotification",
|
"createCollectionFailureNotification",
|
||||||
|
@ -953,7 +975,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"appLockUnlockHint",
|
"appLockUnlockHint",
|
||||||
"appLockUnlockWrongPassword",
|
"appLockUnlockWrongPassword",
|
||||||
"enabledText",
|
"enabledText",
|
||||||
|
@ -971,7 +995,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"appLockUnlockHint",
|
"appLockUnlockHint",
|
||||||
"appLockUnlockWrongPassword",
|
"appLockUnlockWrongPassword",
|
||||||
"enabledText",
|
"enabledText",
|
||||||
|
@ -1018,7 +1044,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"settingsExpertTitle",
|
"settingsExpertTitle",
|
||||||
"settingsExpertWarningText",
|
"settingsExpertWarningText",
|
||||||
"settingsClearCacheDatabaseTitle",
|
"settingsClearCacheDatabaseTitle",
|
||||||
|
@ -1161,7 +1189,9 @@
|
||||||
"settingsAppLockDescription",
|
"settingsAppLockDescription",
|
||||||
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
"settingsAppLockSetupBiometricFallbackDialogTitle",
|
||||||
"settingsAppLockSetupPinDialogTitle",
|
"settingsAppLockSetupPinDialogTitle",
|
||||||
|
"settingsAppLockConfirmPinDialogTitle",
|
||||||
"settingsAppLockSetupPasswordDialogTitle",
|
"settingsAppLockSetupPasswordDialogTitle",
|
||||||
|
"settingsAppLockConfirmPasswordDialogTitle",
|
||||||
"settingsExpertTitle",
|
"settingsExpertTitle",
|
||||||
"settingsExpertWarningText",
|
"settingsExpertWarningText",
|
||||||
"settingsClearCacheDatabaseTitle",
|
"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 _BlocBuilder = BlocBuilder<_Bloc, _State>;
|
||||||
// typedef _BlocListener = BlocListener<_Bloc, _State>;
|
// typedef _BlocListener = BlocListener<_Bloc, _State>;
|
||||||
typedef _BlocListenerT<T> = BlocListenerT<_Bloc, _State, T>;
|
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 _BlocBuilder = BlocBuilder<_Bloc, _State>;
|
||||||
// typedef _BlocListener = BlocListener<_Bloc, _State>;
|
// typedef _BlocListener = BlocListener<_Bloc, _State>;
|
||||||
typedef _BlocListenerT<T> = BlocListenerT<_Bloc, _State, T>;
|
typedef _BlocListenerT<T> = BlocListenerT<_Bloc, _State, T>;
|
||||||
|
|
|
@ -258,6 +258,13 @@ class _WrappedAppLockSettings extends StatelessWidget {
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
return 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);
|
return context.bloc.securePrefController.setProtectedPageAuthPin(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,6 +276,13 @@ class _WrappedAppLockSettings extends StatelessWidget {
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
final isConfirmed = await showDialog<bool>(
|
||||||
|
context: context,
|
||||||
|
builder: (_) => ProtectedPagePasswordConfirmDialog(password: result),
|
||||||
|
);
|
||||||
|
if (isConfirmed != true) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return context.bloc.securePrefController
|
return context.bloc.securePrefController
|
||||||
.setProtectedPageAuthPassword(result);
|
.setProtectedPageAuthPassword(result);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue