Skip to content

Commit c44d65e

Browse files
committed
Fully merge PR #1398
2 parents faed716 + 0cf48ad commit c44d65e

File tree

3 files changed

+26
-12
lines changed

3 files changed

+26
-12
lines changed

helper/helper/fido.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,9 @@ def _prepare_reset_nfc(device, event, signal):
126126
try:
127127
conn = dev.open_connection(FidoConnection)
128128
if removed:
129+
conn.close()
129130
sleep(1.0) # Wait for the device to settle
130-
return conn
131+
return dev.open_connection(FidoConnection)
131132
conn.close()
132133
except CardConnectionException:
133134
pass # Expected, ignore

lib/app/views/elevate_fido_buttons.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class ElevateFidoButtons extends ConsumerWidget {
4343
duration: const Duration(seconds: 30));
4444
try {
4545
if (await ref.read(rpcProvider).requireValue.elevate()) {
46-
ref.invalidate(rpcProvider);
46+
ref.invalidate(rpcStateProvider);
4747
} else {
4848
await ref.read(withContextProvider)((context) async =>
4949
showMessage(context, l10n.s_permission_denied));

lib/app/views/reset_dialog.dart

+23-10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import 'dart:async';
18+
import 'dart:io';
1819

1920
import 'package:flutter/material.dart';
2021
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -25,6 +26,7 @@ import '../../app/logging.dart';
2526
import '../../core/models.dart';
2627
import '../../core/state.dart';
2728
import '../../desktop/models.dart';
29+
import '../../desktop/state.dart';
2830
import '../../fido/models.dart';
2931
import '../../fido/state.dart';
3032
import '../../management/models.dart';
@@ -36,6 +38,7 @@ import '../features.dart' as features;
3638
import '../message.dart';
3739
import '../models.dart';
3840
import '../state.dart';
41+
import 'elevate_fido_buttons.dart';
3942
import 'keys.dart';
4043

4144
final _log = Logger('fido.views.reset_dialog');
@@ -106,7 +109,12 @@ class _ResetDialogState extends ConsumerState<ResetDialog> {
106109
.contains(widget.data.info.formFactor);
107110
final globalReset = isBio && (supported & Capability.piv.value) != 0;
108111
final l10n = AppLocalizations.of(context)!;
112+
109113
double progress = _currentStep == -1 ? 0.0 : _currentStep / (_totalSteps);
114+
final needsElevation = Platform.isWindows &&
115+
_application == Capability.fido2 &&
116+
!ref.watch(rpcStateProvider.select((state) => state.isAdmin));
117+
110118
return ResponsiveDialog(
111119
title: Text(l10n.s_factory_reset),
112120
key: factoryResetCancel,
@@ -256,16 +264,21 @@ class _ResetDialogState extends ConsumerState<ResetDialog> {
256264
.bodyMedium
257265
?.copyWith(fontWeight: FontWeight.w700),
258266
),
259-
Text(
260-
switch (_application) {
261-
Capability.oath => l10n.p_warning_disable_credentials,
262-
Capability.piv => l10n.p_warning_piv_reset_desc,
263-
Capability.fido2 => l10n.p_warning_disable_accounts,
264-
_ => globalReset
265-
? l10n.p_warning_global_reset_desc
266-
: l10n.p_factory_reset_desc,
267-
},
268-
),
267+
if (needsElevation) ...[
268+
Text(l10n.p_elevated_permissions_required),
269+
const ElevateFidoButtons(),
270+
] else ...[
271+
Text(
272+
switch (_application) {
273+
Capability.oath => l10n.p_warning_disable_credentials,
274+
Capability.piv => l10n.p_warning_piv_reset_desc,
275+
Capability.fido2 => l10n.p_warning_disable_accounts,
276+
_ => globalReset
277+
? l10n.p_warning_global_reset_desc
278+
: l10n.p_factory_reset_desc,
279+
},
280+
),
281+
],
269282
if (_application == Capability.fido2 && _currentStep >= 0) ...[
270283
Text('${l10n.s_status}: ${_getMessage()}'),
271284
LinearProgressIndicator(value: progress)

0 commit comments

Comments
 (0)