diff options
author | Endi Sukma Dewata <edewata@redhat.com> | 2012-01-31 13:41:28 -0600 |
---|---|---|
committer | Petr VobornÃk <pvoborni@redhat.com> | 2012-02-01 15:51:50 +0100 |
commit | b73fc6e550fed9a1b6d83a03fa16f43b361ec8aa (patch) | |
tree | b6689c9c2d1993db34ec319a7bf579afbbfb62f7 /install | |
parent | 77f0e9aba5282679754029220538b12480316ca8 (diff) | |
download | freeipa-b73fc6e550fed9a1b6d83a03fa16f43b361ec8aa.tar.gz freeipa-b73fc6e550fed9a1b6d83a03fa16f43b361ec8aa.tar.xz freeipa-b73fc6e550fed9a1b6d83a03fa16f43b361ec8aa.zip |
Show password expiration date.
The user details page was modified to show the password expiration
date next to the existing password field.
Fixed problem resetting password in self-service mode. The JSON
interface for the passwd command requires the username to be
specified although the equivalent CLI command doesn't require it.
Ticket #2064
Diffstat (limited to 'install')
-rw-r--r-- | install/ui/field.js | 21 | ||||
-rw-r--r-- | install/ui/host.js | 40 | ||||
-rwxr-xr-x | install/ui/test/bin/update_ipa_init.sh | 1 | ||||
-rw-r--r-- | install/ui/test/data/ipa_init.json | 1 | ||||
-rw-r--r-- | install/ui/user.js | 29 | ||||
-rw-r--r-- | install/ui/widget.js | 39 |
6 files changed, 77 insertions, 54 deletions
diff --git a/install/ui/field.js b/install/ui/field.js index c448c41c5..38d71b476 100644 --- a/install/ui/field.js +++ b/install/ui/field.js @@ -34,6 +34,7 @@ IPA.field = function(spec) { that.name = spec.name; that.label = spec.label; that.tooltip = spec.tooltip; + that.formatter = spec.formatter; that.widget = null; that.widget_name = spec.widget; @@ -194,7 +195,25 @@ IPA.field = function(spec) { }; that.update = function() { - if(that.widget && that.widget.update) that.widget.update(that.values); + + if (!that.widget || !that.widget.update) return; + + var formatted_values; + + // The formatter is currently only used on read-only fields only + // because it cannot parse formatted values back to internal values. + if (that.formatter && that.read_only) { + formatted_values = []; + for (var i=0; that.values && i<that.values.length; i++) { + var value = that.values[i]; + var formatted_value = that.formatter.format(value); + formatted_values.push(formatted_value); + } + } else { + formatted_values = that.values; + } + + that.widget.update(formatted_values); }; that.get_update_info = function() { diff --git a/install/ui/host.js b/install/ui/host.js index 12748f673..299d147a0 100644 --- a/install/ui/host.js +++ b/install/ui/host.js @@ -466,46 +466,6 @@ IPA.host_dnsrecord_entity_link_field = function(spec){ IPA.field_factories['host_dnsrecord_entity_link'] = IPA.host_dnsrecord_entity_link_field; IPA.widget_factories['host_dnsrecord_entity_link'] = IPA.link_widget; -/* Take an LDAP format date in UTC and format it */ -IPA.utc_date_column_formatter = function(spec) { - - spec = spec || {}; - - var that = IPA.formatter(spec); - - that.format = function(value) { - - if (!value) return ''; - - // verify length - if (value.length != '20101119025910Z'.length) { - return value; - } - - /* We only handle GMT */ - if (value.charAt(value.length -1) !== 'Z') { - return value; - } - - var date = new Date(); - - date.setUTCFullYear( - value.substring(0, 4), // YYYY - value.substring(4, 6)-1, // MM (0-11) - value.substring(6, 8)); // DD (1-31) - - date.setUTCHours( - value.substring(8, 10), // HH (0-23) - value.substring(10, 12), // MM (0-59) - value.substring(12, 14)); // SS (0-59) - - return date.toString(); - }; - - return that; -}; - - IPA.force_host_add_checkbox_widget = function(spec) { var metadata = IPA.get_command_option('host_add', spec.name); spec.label = metadata.label; diff --git a/install/ui/test/bin/update_ipa_init.sh b/install/ui/test/bin/update_ipa_init.sh index 26cbc9679..11cd03749 100755 --- a/install/ui/test/bin/update_ipa_init.sh +++ b/install/ui/test/bin/update_ipa_init.sh @@ -43,6 +43,7 @@ json="{ curl -v\ -H "Content-Type: application/json"\ -H "Accept: applicaton/json"\ + -H "Referer: https://`hostname`/ipa/xml"\ --negotiate\ --delegation always\ -u :\ diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json index 0f6667fac..fc8ec06bc 100644 --- a/install/ui/test/data/ipa_init.json +++ b/install/ui/test/data/ipa_init.json @@ -335,6 +335,7 @@ "contact": "Contact Settings", "employee": "Employee Information", "error_changing_status": "Error changing account status", + "krbpasswordexpiration": "Password expiration", "mailing": "Mailing Address", "misc": "Misc. Information", "status_confirmation": "Are you sure you want to ${action} the user?<br/>The change will take effect immediately.", diff --git a/install/ui/user.js b/install/ui/user.js index a0cecc7b9..b1dd8a613 100644 --- a/install/ui/user.js +++ b/install/ui/user.js @@ -82,6 +82,12 @@ IPA.user.entity = function(spec) { factory: IPA.user_password_widget, name: 'userpassword' }, + { + name: 'krbpasswordexpiration', + label: IPA.messages.objects.user.krbpasswordexpiration, + read_only: true, + formatter: IPA.utc_date_formatter() + }, 'uidnumber', 'gidnumber', 'loginshell', @@ -551,11 +557,11 @@ IPA.user_password_widget = function(spec) { that.show_dialog = function() { - that.pkey = IPA.nav.get_state('user-pkey'); - that.self_service = that.pkey === IPA.whoami.uid[0]; + var pkey = IPA.nav.get_state('user-pkey'); + var self_service = pkey === IPA.whoami.uid[0]; var sections = []; - if(that.self_service) { + if (self_service) { sections.push({ fields: [ { @@ -600,7 +606,7 @@ IPA.user_password_widget = function(spec) { var current_password; - if (that.self_service) { + if (self_service) { current_password = record.current_password[0]; if (!current_password) { alert(IPA.messages.password.current_password_required); @@ -617,11 +623,15 @@ IPA.user_password_widget = function(spec) { } that.set_password( + pkey, current_password, new_password, function(data, text_status, xhr) { alert(IPA.messages.password.password_change_complete); dialog.close(); + // refresh password expiration field + var facet = IPA.current_entity.get_facet(); + facet.refresh(); }, function(xhr, text_status, error_thrown) { dialog.close(); @@ -641,18 +651,11 @@ IPA.user_password_widget = function(spec) { dialog.open(that.container); }; - that.set_password = function(current_password, password, on_success, on_error) { - - var args; - if (that.self_service) { - args = []; - } else { - args = [that.pkey]; - } + that.set_password = function(pkey, current_password, password, on_success, on_error) { var command = IPA.command({ method: 'passwd', - args: args, + args: [ pkey ], options: { current_password: current_password, password: password diff --git a/install/ui/widget.js b/install/ui/widget.js index 5ab28cb66..04c35bb6e 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -1054,6 +1054,45 @@ IPA.boolean_status_formatter = function(spec) { return that; }; +/* Take an LDAP format date in UTC and format it */ +IPA.utc_date_formatter = function(spec) { + + spec = spec || {}; + + var that = IPA.formatter(spec); + + that.format = function(value) { + + if (!value) return ''; + + // verify length + if (value.length != 'YYYYmmddHHMMSSZ'.length) { + return value; + } + + /* We only handle GMT */ + if (value.charAt(value.length -1) !== 'Z') { + return value; + } + + var date = new Date(); + + date.setUTCFullYear( + value.substring(0, 4), // YYYY + value.substring(4, 6)-1, // mm (0-11) + value.substring(6, 8)); // dd (1-31) + + date.setUTCHours( + value.substring(8, 10), // HH (0-23) + value.substring(10, 12), // MM (0-59) + value.substring(12, 14)); // SS (0-59) + + return date.toString(); + }; + + return that; +}; + /* The entity name must be set in the spec either directly or via entity.name */ |