1515 */
1616
1717import 'dart:async' ;
18+ import 'dart:io' ;
1819
1920import 'package:flutter/material.dart' ;
2021import 'package:flutter_gen/gen_l10n/app_localizations.dart' ;
@@ -25,6 +26,7 @@ import '../../app/logging.dart';
2526import '../../core/models.dart' ;
2627import '../../core/state.dart' ;
2728import '../../desktop/models.dart' ;
29+ import '../../desktop/state.dart' ;
2830import '../../fido/models.dart' ;
2931import '../../fido/state.dart' ;
3032import '../../management/models.dart' ;
@@ -36,6 +38,7 @@ import '../features.dart' as features;
3638import '../message.dart' ;
3739import '../models.dart' ;
3840import '../state.dart' ;
41+ import 'elevate_fido_buttons.dart' ;
3942import 'keys.dart' ;
4043
4144final _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