From 74e31cd9853539f860f68e813191083e46a1192b Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Mon, 19 Dec 2011 18:31:35 -0600 Subject: Added policies into user details page. The user details page has been modified to show the password policy and Kerberos ticket policy that apply to the user. The policies are currently displayed as read-only. Ticket #703 --- install/ui/user.js | 257 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 198 insertions(+), 59 deletions(-) (limited to 'install/ui/user.js') diff --git a/install/ui/user.js b/install/ui/user.js index 01d196ce..c50261a3 100644 --- a/install/ui/user.js +++ b/install/ui/user.js @@ -55,65 +55,133 @@ IPA.user.entity = function(spec) { 'title' ] }). - details_facet({ sections: [ - { - name: 'identity', - label: IPA.messages.details.identity, - fields: [ - 'title', - 'givenname', - 'sn', - 'cn', - 'displayname', - 'initials' - ] - }, - { - name: 'account', - fields: [ - { - factory: IPA.user_status_widget, - name: 'nsaccountlock', - label: IPA.messages.objects.user.account_status - }, - 'uid', - { factory: IPA.user_password_widget, name: 'userpassword' }, - 'uidnumber', - 'gidnumber', - 'loginshell', - 'homedirectory' - ] - }, - { - name: 'contact', - fields: [ - { type: 'multivalued', name: 'mail' }, - { type: 'multivalued', name: 'telephonenumber' }, - { type: 'multivalued', name: 'pager' }, - { type: 'multivalued', name: 'mobile' }, - { type: 'multivalued', name: 'facsimiletelephonenumber' } - ] - }, - { - name: 'mailing', - fields: ['street', 'l', 'st', 'postalcode'] - }, - { - name: 'employee', - fields: [ - 'ou', - { - type: 'entity_select', - name: 'manager', - other_entity: 'user', - other_field: 'uid' - } - ] - }, - { - name: 'misc', - fields: ['carlicense'] - }] + details_facet({ + factory: IPA.user.details_facet, + sections: [ + { + name: 'identity', + label: IPA.messages.details.identity, + fields: [ + 'title', + 'givenname', + 'sn', + 'cn', + 'displayname', + 'initials' + ] + }, + { + name: 'account', + fields: [ + { + factory: IPA.user_status_widget, + name: 'nsaccountlock', + label: IPA.messages.objects.user.account_status + }, + 'uid', + { + factory: IPA.user_password_widget, + name: 'userpassword' + }, + 'uidnumber', + 'gidnumber', + 'loginshell', + 'homedirectory' + ] + }, + { + name: 'pwpolicy', + label: IPA.messages.objects.pwpolicy.identity, + fields: [ + { + name: 'krbmaxpwdlife', + label: IPA.get_entity_param('pwpolicy', 'krbmaxpwdlife').label, + read_only: true + }, + { + name: 'krbminpwdlife', + label: IPA.get_entity_param('pwpolicy', 'krbminpwdlife').label, + read_only: true + }, + { + name: 'krbpwdhistorylength', + label: IPA.get_entity_param('pwpolicy', 'krbpwdhistorylength').label, + read_only: true + }, + { + name: 'krbpwdmindiffchars', + label: IPA.get_entity_param('pwpolicy', 'krbpwdmindiffchars').label, + read_only: true + }, + { + name: 'krbpwdminlength', + label: IPA.get_entity_param('pwpolicy', 'krbpwdminlength').label, + read_only: true + }, + { + name: 'krbpwdmaxfailure', + label: IPA.get_entity_param('pwpolicy', 'krbpwdmaxfailure').label, + read_only: true + }, + { + name: 'krbpwdfailurecountinterval', + label: IPA.get_entity_param('pwpolicy', 'krbpwdfailurecountinterval').label, + read_only: true + }, + { + name: 'krbpwdlockoutduration', + label: IPA.get_entity_param('pwpolicy', 'krbpwdlockoutduration').label, + read_only: true + } + ] + }, + { + name: 'krbtpolicy', + label: IPA.messages.objects.krbtpolicy.identity, + fields: [ + { + name: 'krbmaxrenewableage', + label: IPA.get_entity_param('krbtpolicy', 'krbmaxrenewableage').label, + read_only: true + }, + { + name: 'krbmaxticketlife', + label: IPA.get_entity_param('krbtpolicy', 'krbmaxticketlife').label, + read_only: true + } + ] + }, + { + name: 'contact', + fields: [ + { type: 'multivalued', name: 'mail' }, + { type: 'multivalued', name: 'telephonenumber' }, + { type: 'multivalued', name: 'pager' }, + { type: 'multivalued', name: 'mobile' }, + { type: 'multivalued', name: 'facsimiletelephonenumber' } + ] + }, + { + name: 'mailing', + fields: ['street', 'l', 'st', 'postalcode'] + }, + { + name: 'employee', + fields: [ + 'ou', + { + type: 'entity_select', + name: 'manager', + other_entity: 'user', + other_field: 'uid' + } + ] + }, + { + name: 'misc', + fields: [ 'carlicense' ] + } + ] }). association_facet({ name: 'memberof_group', @@ -186,6 +254,77 @@ IPA.user.entity = function(spec) { return that; }; +IPA.user.details_facet = function(spec) { + + spec = spec || {}; + + var that = IPA.details_facet(spec); + + that.refresh_on_success = function(data, text_status, xhr) { + that.details_facet_refresh_on_success(data, text_status, xhr); + + var batch = IPA.batch_command({ + name: 'user_get_policies' + }); + + var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); + + var pwpolicy_command = IPA.command({ + entity: 'pwpolicy', + method: 'show', + options: { + user: pkey, + all: true, + rights: true + } + }); + + pwpolicy_command.on_success = function(data, text_status, xhr) { + // TODO: Use nested fields: that.fields.get_field('pwpolicy').get_fields(); + var fields = that.fields.get_fields(); + for (var i=0; i