15
15
*/
16
16
17
17
import 'dart:async' ;
18
+ import 'dart:io' ;
18
19
19
20
import 'package:flutter/material.dart' ;
20
21
import 'package:flutter_gen/gen_l10n/app_localizations.dart' ;
@@ -25,6 +26,7 @@ import '../../app/logging.dart';
25
26
import '../../core/models.dart' ;
26
27
import '../../core/state.dart' ;
27
28
import '../../desktop/models.dart' ;
29
+ import '../../desktop/state.dart' ;
28
30
import '../../fido/models.dart' ;
29
31
import '../../fido/state.dart' ;
30
32
import '../../management/models.dart' ;
@@ -36,6 +38,7 @@ import '../features.dart' as features;
36
38
import '../message.dart' ;
37
39
import '../models.dart' ;
38
40
import '../state.dart' ;
41
+ import 'elevate_fido_buttons.dart' ;
39
42
import 'keys.dart' ;
40
43
41
44
final _log = Logger ('fido.views.reset_dialog' );
@@ -106,7 +109,12 @@ class _ResetDialogState extends ConsumerState<ResetDialog> {
106
109
.contains (widget.data.info.formFactor);
107
110
final globalReset = isBio && (supported & Capability .piv.value) != 0 ;
108
111
final l10n = AppLocalizations .of (context)! ;
112
+
109
113
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
+
110
118
return ResponsiveDialog (
111
119
title: Text (l10n.s_factory_reset),
112
120
key: factoryResetCancel,
@@ -256,16 +264,21 @@ class _ResetDialogState extends ConsumerState<ResetDialog> {
256
264
.bodyMedium
257
265
? .copyWith (fontWeight: FontWeight .w700),
258
266
),
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
+ ],
269
282
if (_application == Capability .fido2 && _currentStep >= 0 ) ...[
270
283
Text ('${l10n .s_status }: ${_getMessage ()}' ),
271
284
LinearProgressIndicator (value: progress)
0 commit comments