mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-07-17 23:54:08 +00:00
require authentication for backup password change
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run
This commit is contained in:
parent
e7dab1102d
commit
e000b7c41d
5 changed files with 47 additions and 7 deletions
|
|
@ -1604,6 +1604,18 @@ abstract class AppLocalizations {
|
|||
/// **'Change password'**
|
||||
String get backupChangePassword;
|
||||
|
||||
/// No description provided for @backupChangePasswordAuthReason.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Changing backup password'**
|
||||
String get backupChangePasswordAuthReason;
|
||||
|
||||
/// No description provided for @backupChangePasswordAuthFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'You can only change your password after you have authenticated!'**
|
||||
String get backupChangePasswordAuthFailed;
|
||||
|
||||
/// No description provided for @twonlySafeRecoverTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -841,7 +841,14 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
String get backupTwonlySaveNow => 'Jetzt speichern';
|
||||
|
||||
@override
|
||||
String get backupChangePassword => 'Password ändern';
|
||||
String get backupChangePassword => 'Passwort ändern';
|
||||
|
||||
@override
|
||||
String get backupChangePasswordAuthReason => 'Backup-Passwort ändern';
|
||||
|
||||
@override
|
||||
String get backupChangePasswordAuthFailed =>
|
||||
'Du kannst dein Passwort nur ändern, wenn du dich authentifiziert hast!';
|
||||
|
||||
@override
|
||||
String get twonlySafeRecoverTitle => 'Backup wiederherstellen';
|
||||
|
|
|
|||
|
|
@ -838,6 +838,13 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get backupChangePassword => 'Change password';
|
||||
|
||||
@override
|
||||
String get backupChangePasswordAuthReason => 'Changing backup password';
|
||||
|
||||
@override
|
||||
String get backupChangePasswordAuthFailed =>
|
||||
'You can only change your password after you have authenticated!';
|
||||
|
||||
@override
|
||||
String get twonlySafeRecoverTitle => 'Restore backup';
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 80b21d7e566a12d105f573cb7224b6cdfe37048b
|
||||
Subproject commit aa2ac144d3663f476f19ba28ced318b1a64c7a73
|
||||
|
|
@ -6,6 +6,7 @@ import 'package:twonly/src/services/backup.service.dart';
|
|||
import 'package:twonly/src/services/user.service.dart';
|
||||
import 'package:twonly/src/utils/misc.dart';
|
||||
import 'package:twonly/src/visual/components/alert.dialog.dart';
|
||||
import 'package:twonly/src/visual/components/snackbar.dart';
|
||||
import 'package:twonly/src/visual/elements/my_button.element.dart';
|
||||
import 'package:twonly/src/visual/views/settings/backup/components/backup_setup.comp.dart';
|
||||
|
||||
|
|
@ -26,7 +27,7 @@ class SetupBackupView extends StatefulWidget {
|
|||
class _SetupBackupViewState extends State<SetupBackupView> {
|
||||
bool _isLoading = false;
|
||||
final TextEditingController _passwordController = TextEditingController();
|
||||
final TextEditingController _repeadedController = TextEditingController();
|
||||
final TextEditingController _repeatedController = TextEditingController();
|
||||
|
||||
Future<void> _updateBackupPassword() async {
|
||||
setState(() {
|
||||
|
|
@ -52,6 +53,19 @@ class _SetupBackupViewState extends State<SetupBackupView> {
|
|||
}
|
||||
}
|
||||
|
||||
if (!mounted) return;
|
||||
final verified = await authenticateUser(
|
||||
context.lang.backupChangePasswordAuthReason,
|
||||
);
|
||||
if (!mounted) return;
|
||||
if (!verified) {
|
||||
showSnackbar(
|
||||
context,
|
||||
context.lang.backupChangePasswordAuthFailed,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
await Future.delayed(const Duration(milliseconds: 100));
|
||||
await BackupService.updateBackupPassword(_passwordController.text);
|
||||
await UserService.update((u) => u.isBackupEnabled = true);
|
||||
|
|
@ -108,15 +122,15 @@ class _SetupBackupViewState extends State<SetupBackupView> {
|
|||
),
|
||||
const SizedBox(height: 5),
|
||||
BackupPasswordTextField(
|
||||
controller: _repeadedController,
|
||||
controller: _repeatedController,
|
||||
labelText: context.lang.passwordRepeated,
|
||||
onChanged: (value) => setState(() {}),
|
||||
),
|
||||
PasswordRequirementText(
|
||||
text: context.lang.passwordRepeatedNotEqual,
|
||||
showError:
|
||||
_passwordController.text != _repeadedController.text &&
|
||||
_repeadedController.text.isNotEmpty,
|
||||
_passwordController.text != _repeatedController.text &&
|
||||
_repeatedController.text.isNotEmpty,
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
Text(
|
||||
|
|
@ -131,7 +145,7 @@ class _SetupBackupViewState extends State<SetupBackupView> {
|
|||
onPressed:
|
||||
(!_isLoading &&
|
||||
(_passwordController.text ==
|
||||
_repeadedController.text &&
|
||||
_repeatedController.text &&
|
||||
_passwordController.text.length >= 8 ||
|
||||
!kReleaseMode))
|
||||
? _updateBackupPassword
|
||||
|
|
|
|||
Loading…
Reference in a new issue