Skip to content

Commit 231530d

Browse files
authored
Handle no U2F device available (#3648)
1 parent 47f4e63 commit 231530d

3 files changed

Lines changed: 17 additions & 12 deletions

File tree

archinstall/lib/authentication/authentication_menu.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,13 @@ def _define_menu_options(self) -> list[MenuItem]:
3535
return [
3636
MenuItem(
3737
text=tr('U2F login setup'),
38-
action=setup_u2f_login,
38+
action=select_u2f_login,
3939
value=self._auth_config.u2f_config,
4040
preview_action=self._prev_u2f_login,
41-
dependencies=[self._depends_on_u2f],
4241
key='u2f_config',
4342
),
4443
]
4544

46-
def _depends_on_u2f(self) -> bool:
47-
devices = Fido2.get_fido2_devices()
48-
if not devices:
49-
return False
50-
return True
51-
5245
def _prev_u2f_login(self, item: MenuItem) -> str | None:
5346
if item.value is not None:
5447
u2f_config: U2FLoginConfiguration = item.value
@@ -60,10 +53,19 @@ def _prev_u2f_login(self, item: MenuItem) -> str | None:
6053
output += tr('Passwordless sudo: ') + (tr('Enabled') if u2f_config.passwordless_sudo else tr('Disabled'))
6154

6255
return output
56+
57+
devices = Fido2.get_fido2_devices()
58+
if not devices:
59+
return tr('No U2F devices found')
60+
6361
return None
6462

6563

66-
def setup_u2f_login(preset: U2FLoginConfiguration) -> U2FLoginConfiguration | None:
64+
def select_u2f_login(preset: U2FLoginConfiguration) -> U2FLoginConfiguration | None:
65+
devices = Fido2.get_fido2_devices()
66+
if not devices:
67+
return None
68+
6769
items = []
6870
for method in U2FLoginMethod:
6971
items.append(MenuItem(method.display_value(), value=method))

archinstall/lib/disk/fido.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def get_fido2_devices(cls) -> list[Fido2Device]:
3636

3737
fido_devices = clear_vt100_escape_codes_from_str(ret)
3838

39-
for line in fido_devices.split('\r\n'):
39+
if not fido_devices:
40+
return []
41+
42+
for line in fido_devices.splitlines():
4043
path, details = line.replace(',', '').split(':', maxsplit=1)
4144
_, product, manufacturer = details.strip().split(' ', maxsplit=2)
4245

archinstall/lib/installer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1507,7 +1507,7 @@ def _add_efistub_bootloader(
15071507

15081508
parent_dev_path = device_handler.get_parent_device_path(boot_partition.safe_dev_path)
15091509

1510-
cmd_template = [
1510+
cmd_template = (
15111511
'efibootmgr',
15121512
'--create',
15131513
'--disk',
@@ -1521,7 +1521,7 @@ def _add_efistub_bootloader(
15211521
'--unicode',
15221522
*cmdline,
15231523
'--verbose',
1524-
]
1524+
)
15251525

15261526
for kernel in self.kernels:
15271527
# Setup the firmware entry

0 commit comments

Comments
 (0)