From c016e271b2bddde5c26822fee78e7f07b95dddc3 Mon Sep 17 00:00:00 2001 From: Florence Blanc-Renaud Date: Wed, 21 Dec 2022 16:34:15 +0100 Subject: [PATCH] Passkey: add "passkey configuration" to webui Add a "Passkey configuration" subtab in the "Policy" tab, showing the settings for passkeyconfig. Related: https://pagure.io/freeipa/issue/9261 Signed-off-by: Florence Blanc-Renaud Reviewed-By: Alexander Bokovoy --- install/ui/src/freeipa/app.js | 1 + .../ui/src/freeipa/navigation/menu_spec.js | 3 +- install/ui/src/freeipa/passkeyconfig.js | 66 +++++++++++++++++++ install/ui/test/data/i18n_messages.json | 6 ++ ipaserver/plugins/internal.py | 14 ++-- 5 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 install/ui/src/freeipa/passkeyconfig.js diff --git a/install/ui/src/freeipa/app.js b/install/ui/src/freeipa/app.js index f98a96002..d78cebb3a 100644 --- a/install/ui/src/freeipa/app.js +++ b/install/ui/src/freeipa/app.js @@ -44,6 +44,7 @@ define([ './idviews', './netgroup', './otptoken', + './passkeyconfig', './policy', './radiusproxy', './realmdomains', diff --git a/install/ui/src/freeipa/navigation/menu_spec.js b/install/ui/src/freeipa/navigation/menu_spec.js index 41f01a728..0540220bb 100644 --- a/install/ui/src/freeipa/navigation/menu_spec.js +++ b/install/ui/src/freeipa/navigation/menu_spec.js @@ -149,7 +149,8 @@ var nav = {}; }, { entity: 'selinuxusermap' }, { entity: 'pwpolicy' }, - { entity: 'krbtpolicy' } + { entity: 'krbtpolicy' }, + { entity: 'passkeyconfig' } ] }, { diff --git a/install/ui/src/freeipa/passkeyconfig.js b/install/ui/src/freeipa/passkeyconfig.js new file mode 100644 index 000000000..f34d82290 --- /dev/null +++ b/install/ui/src/freeipa/passkeyconfig.js @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2022 FreeIPA Contributors see COPYING for license + */ + +define([ + './ipa', + './jquery', + './phases', + './reg', + './details', + './search', + './association', + './entity'], + function(IPA, $, phases, reg) { + +var exp = IPA.passkeyconfig = {}; + +var make_spec = function() { +return { + name: 'passkeyconfig', + defines_key: false, + facets: [ + { + $type: 'details', + title: '@mo:config.label', + sections: [ + { + name: 'options', + label: '@i18n:objects.passkeyconfig.options', + fields: [ + { + $type: 'radio', + name: 'iparequireuserverification', + default_value: 'default', + options: [ + { + value: 'on', + label: '@i18n:objects.passkeyconfig.on' + }, + { + value: 'off', + label: '@i18n:objects.passkeyconfig.off' + }, + { + value: 'default', + label: '@i18n:objects.passkeyconfig.default' + } + ] + } + ] + } + ], + needs_update: true + } + ] +};}; + +exp.entity_spec = make_spec(); +exp.register = function() { + var e = reg.entity; + e.register({type: 'passkeyconfig', spec: exp.entity_spec}); +}; +phases.on('registration', exp.register); + +return {}; +}); diff --git a/install/ui/test/data/i18n_messages.json b/install/ui/test/data/i18n_messages.json index e1851d83f..7d8b8877b 100644 --- a/install/ui/test/data/i18n_messages.json +++ b/install/ui/test/data/i18n_messages.json @@ -555,6 +555,12 @@ "type_hotp": "Counter-based (HOTP)", "type_totp": "Time-based (TOTP)" }, + "passkeyconfig": { + "options": _("Options"), + "on": _("On"), + "off": _("Off"), + "default": _("Default"), + }, "permission": { "add_custom_attr": "Add Custom Attribute", "attribute": "Attribute", diff --git a/ipaserver/plugins/internal.py b/ipaserver/plugins/internal.py index 9109228a9..17927003e 100644 --- a/ipaserver/plugins/internal.py +++ b/ipaserver/plugins/internal.py @@ -1225,13 +1225,19 @@ class i18n_messages(Command): "type_totp": _("Time-based (TOTP)"), }, "passkey": { - "adder_title": "Add Passkey", - "data_label": "Passkey", - "deleter_content": "Do you want to remove passkey ${passkey}?", + "adder_title": "Add Passkey", + "data_label": "Passkey", + "deleter_content": "Do you want to remove passkey ${passkey}?", "deleter_title": "Remove Passkey", "type_discoverable": "(discoverable) ", "type_serverside": "(server-side) " - }, + }, + "passkeyconfig": { + "options": _("Options"), + "on": _("On"), + "off": _("Off"), + "default": _("Default"), + }, "permission": { "add_custom_attr": _("Add Custom Attribute"), "attribute": _("Attribute"),