mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Passkey support: show the passkey in webui
Display the passkey value for user or stageuser in the user details page Allow addition/removal of a passkey Related: https://pagure.io/freeipa/issue/9261 Signed-off-by: Florence Blanc-Renaud <flo@redhat.com> Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
@@ -1449,6 +1449,34 @@ field.certmap_command_multivalued_field = function(spec) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Used along with custom_command_multivalued widget
|
||||
*
|
||||
* - by default has `w_if_no_aci` to workaround missing object class
|
||||
* - by default has always_writable=true to workaround aci rights
|
||||
*
|
||||
* @class
|
||||
* @alternateClassName IPA.custom_command_multivalued_field
|
||||
* @extends IPA.field
|
||||
*/
|
||||
field.passkey_command_multivalued_field = function(spec) {
|
||||
|
||||
spec = spec || {};
|
||||
spec.flags = spec.flags || ['w_if_no_aci'];
|
||||
|
||||
var that = IPA.field(spec);
|
||||
|
||||
/**
|
||||
* Set field always writable in case that it is set to true
|
||||
* @param Boolean always_writable
|
||||
*/
|
||||
that.always_writable = spec.always_writable === undefined ? true :
|
||||
spec.always_writable;
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
|
||||
IPA.custom_command_multivalued_field = field.custom_command_multivalued_field;
|
||||
|
||||
/**
|
||||
@@ -1929,6 +1957,7 @@ field.register = function() {
|
||||
f.register('field', field.field);
|
||||
f.register('link', field.field);
|
||||
f.register('multivalued', field.field);
|
||||
f.register('passkey_multivalued', field.passkey_command_multivalued_field);
|
||||
f.register('password', field.field);
|
||||
f.register('radio', field.radio_field);
|
||||
f.register('select', field.field);
|
||||
|
||||
@@ -150,6 +150,18 @@ return {
|
||||
name: 'ipasshpubkey',
|
||||
label: '@i18n:objects.sshkeystore.keys'
|
||||
},
|
||||
{
|
||||
$type: 'passkey_multivalued',
|
||||
name: 'ipapasskey',
|
||||
item_name: 'passkey',
|
||||
child_spec: {
|
||||
$type: 'non_editable_row',
|
||||
data_name: 'passkey'
|
||||
},
|
||||
tooltip: {
|
||||
title: '@mc:user_add_passkey.doc'
|
||||
}
|
||||
},
|
||||
{
|
||||
$type: 'certmap_multivalued',
|
||||
name: 'ipacertmapdata',
|
||||
|
||||
@@ -208,6 +208,18 @@ return {
|
||||
name: 'ipasshpubkey',
|
||||
label: '@i18n:objects.sshkeystore.keys'
|
||||
},
|
||||
{
|
||||
$type: 'passkey_multivalued',
|
||||
name: 'ipapasskey',
|
||||
item_name: 'passkey',
|
||||
child_spec: {
|
||||
$type: 'non_editable_row',
|
||||
data_name: 'passkey'
|
||||
},
|
||||
tooltip: {
|
||||
title: '@mc:user_add_passkey.doc'
|
||||
}
|
||||
},
|
||||
{
|
||||
$type: 'certs',
|
||||
name: 'usercertificate',
|
||||
|
||||
@@ -6341,6 +6341,72 @@ exp.widget_builder = IPA.widget_builder = function(spec) {
|
||||
return that;
|
||||
};
|
||||
|
||||
/**
|
||||
* Multivalued widget which is used for working with user's certmap.
|
||||
*
|
||||
* @class
|
||||
* @extends IPA.custom_command_multivalued_widget
|
||||
*/
|
||||
IPA.passkey_multivalued_widget = function (spec) {
|
||||
|
||||
spec = spec || {};
|
||||
spec.child_spec = spec.child_spec || {};
|
||||
spec.child_spec.data_name = spec.child_spec.data_name || 'passkey';
|
||||
|
||||
spec.adder_dialog_spec = spec.adder_dialog_spec || {
|
||||
title: '@i18n:objects.passkey.adder_title',
|
||||
fields: [
|
||||
{
|
||||
$type: 'textarea',
|
||||
name: 'passkey',
|
||||
label: '@i18n:objects.passkey.data_label',
|
||||
required: true,
|
||||
rows: 10
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
var that = IPA.custom_command_multivalued_widget(spec);
|
||||
|
||||
that.create_remove_dialog_title = function(row) {
|
||||
return text.get('@i18n:objects.passkey.deleter_title');
|
||||
};
|
||||
|
||||
that.create_remove_dialog_message = function(row) {
|
||||
var message = text.get('@i18n:objects.passkey.deleter_content');
|
||||
message = message.replace('${passkey}', row.widget.new_value);
|
||||
|
||||
return message;
|
||||
};
|
||||
|
||||
that.create_remove_args = function(row) {
|
||||
var pkey = that.facet.get_pkey();
|
||||
var passkey = row.widget.new_value;
|
||||
passkey = [ passkey ];
|
||||
|
||||
var args = [
|
||||
pkey,
|
||||
passkey
|
||||
];
|
||||
|
||||
return args;
|
||||
};
|
||||
|
||||
that.create_add_args = function(row) {
|
||||
var pkey = that.facet.get_pkey();
|
||||
var passkey = that.adder_dialog.get_field('passkey').value;
|
||||
|
||||
var args = [
|
||||
pkey,
|
||||
passkey
|
||||
];
|
||||
|
||||
return args;
|
||||
};
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
/**
|
||||
* SSH keys widget
|
||||
*
|
||||
@@ -7211,6 +7277,9 @@ exp.register = function() {
|
||||
IPA.krb_principal_multivalued_widget);
|
||||
w.register('krb_principal',
|
||||
IPA.krb_principal_widget);
|
||||
w.register('passkey_multivalued',
|
||||
IPA.passkey_multivalued_widget);
|
||||
w.register('passkey', IPA.passkey_widget);
|
||||
w.register('password', IPA.password_widget);
|
||||
w.register('radio', IPA.radio_widget);
|
||||
w.register('select', IPA.select_widget);
|
||||
|
||||
Reference in New Issue
Block a user