summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-05-03 10:48:23 +0200
committerPetr Vobornik <pvoborni@redhat.com>2012-06-04 10:45:07 +0200
commitea5ae4b1cf1aa912ca4b88a7f2dbb59594b28cdb (patch)
tree939e7599207e72a59f531c0a8cb4304f341b73cb
parent890151dca823cd06b2d6980e2b255c218a16e6a1 (diff)
downloadfreeipa-ea5ae4b1cf1aa912ca4b88a7f2dbb59594b28cdb.tar.gz
freeipa-ea5ae4b1cf1aa912ca4b88a7f2dbb59594b28cdb.tar.xz
freeipa-ea5ae4b1cf1aa912ca4b88a7f2dbb59594b28cdb.zip
User password widget modified.
Currently the user password is shown as follows in the details page: Password: Reset Password This is inconsistent with the rest of the page because the 'Reset Password' is an action, not the value of the password. Now password is shown as follows: Password: ******* (if set) Password: (if not set) Reset password link was removed as well the dialog for reset password was removed from password widget. The dialog was moved to its own object and can be now showed independently. An action for showing this dialog should be created. https://fedorahosted.org/freeipa/ticket/2248
-rw-r--r--install/ui/test/data/ipa_init.json1
-rw-r--r--install/ui/user.js185
-rw-r--r--ipalib/plugins/internal.py1
3 files changed, 114 insertions, 73 deletions
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 7ceda5703..01201f69e 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -425,6 +425,7 @@
"current_password": "Current Password",
"current_password_required": "Current password is required",
"new_password": "New Password",
+ "new_password_required": "New password is required",
"password_change_complete": "Password change complete",
"password_must_match": "Passwords must match",
"reset_password": "Reset Password",
diff --git a/install/ui/user.js b/install/ui/user.js
index 65d3de726..61db5315e 100644
--- a/install/ui/user.js
+++ b/install/ui/user.js
@@ -107,7 +107,8 @@ IPA.user.entity = function(spec) {
'uid',
{
factory: IPA.user_password_widget,
- name: 'userpassword'
+ name: 'has_password',
+ metadata: IPA.get_entity_param('user', 'userpassword')
},
{
name: 'krbpasswordexpiration',
@@ -430,118 +431,154 @@ IPA.user_adder_dialog = function(spec) {
IPA.user_password_widget = function(spec) {
spec = spec || {};
+ spec.read_only = true;
var that = IPA.input_widget(spec);
+ that.set_value = spec.set_value || '******';
+ that.unset_value = spec.unset_value || '';
that.create = function(container) {
that.widget_create(container);
- $('<a/>', {
- href: 'jslink',
- title: 'userpassword',
- text: IPA.messages.password.reset_password,
- click: function() {
- that.show_dialog();
- return false;
- }
+ that.display_control = $('<label/>', {
+ name: that.name
}).appendTo(container);
};
- that.show_dialog = function() {
-
- var pkey = IPA.nav.get_state('user-pkey');
- var self_service = pkey === IPA.whoami.uid[0];
+ that.update = function(values) {
- var sections = [];
- if (self_service) {
- sections.push({
- fields: [
- {
- name: 'current_password',
- label: IPA.messages.password.current_password,
- type: 'password'
- }
- ]
- });
+ if (values && values[0]) {
+ that.display_control.text(that.set_value);
+ } else {
+ that.display_control.text(that.unset_value);
}
+ };
+
+ that.clear = function() {
+ that.display_control.text('');
+ };
+
+ return that;
+};
- sections.push({
+IPA.user_password_dialog = function(spec) {
+
+ spec = spec || {};
+
+ spec.width = spec.width || 400;
+ spec.title = spec.title || IPA.messages.password.reset_password;
+ spec.sections = spec.sections || [];
+
+ spec.sections.push(
+ {
+ name: 'input',
fields: [
{
+ name: 'current_password',
+ label: IPA.messages.password.current_password,
+ type: 'password',
+ required: true
+ },
+ {
name: 'password1',
label: IPA.messages.password.new_password,
- type: 'password'
+ type: 'password',
+ required: true
},
{
name: 'password2',
label: IPA.messages.password.verify_password,
- type: 'password'
+ type: 'password',
+ required: true
}
]
});
- var dialog = IPA.dialog({
- entity: that.entity,
- title: IPA.messages.password.reset_password,
- width: 400,
- sections: sections
- });
+ var that = IPA.dialog(spec);
+ that.get_pkey = function() {
+ return IPA.nav.get_state('user-pkey');
+ };
- dialog.create_button({
- name: 'reset_password',
- label: IPA.messages.password.reset_password,
- click: function() {
-
- var record = {};
- dialog.save(record);
+ that.is_self_service = function() {
+ var pkey = that.get_pkey();
+ var self_service = pkey === IPA.whoami.uid[0];
+ return self_service;
+ };
- var current_password;
+ that.open = function() {
- if (self_service) {
- current_password = record.current_password[0];
- if (!current_password) {
- alert(IPA.messages.password.current_password_required);
- return;
- }
- }
+ var self_service = that.is_self_service();
+ var section = that.widgets.get_widget('input');
- var new_password = record.password1[0];
- var repeat_password = record.password2[0];
+ that.dialog_open();
+ section.set_row_visible('current_password', self_service);
+ };
- if (new_password != repeat_password) {
- alert(IPA.messages.password.password_must_match);
- return;
- }
+ that.create_buttons = function() {
- 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();
- }
- );
- }
+ that.create_button({
+ name: 'reset_password',
+ label: IPA.messages.password.reset_password,
+ click: that.on_reset_click
});
- dialog.create_button({
+ that.create_button({
name: 'cancel',
label: IPA.messages.buttons.cancel,
click: function() {
- dialog.close();
+ that.close();
}
});
+ };
+
+ that.on_reset_click = function() {
+
+ var pkey = that.get_pkey();
+ var self_service = that.is_self_service();
+
+ var record = {};
+ that.save(record);
- dialog.open(that.container);
+ var current_password;
+
+ if (self_service) {
+ current_password = record.current_password[0];
+ if (!current_password) {
+ alert(IPA.messages.password.current_password_required);
+ return;
+ }
+ }
+
+ var new_password = record.password1[0];
+ var repeat_password = record.password2[0];
+
+ if (IPA.is_empty(new_password)) {
+ alert(IPA.messages.password.new_password_required);
+ return;
+ }
+
+ if (new_password != repeat_password) {
+ alert(IPA.messages.password.password_must_match);
+ return;
+ }
+
+ that.set_password(
+ pkey,
+ current_password,
+ new_password,
+ function(data, text_status, xhr) {
+ alert(IPA.messages.password.password_change_complete);
+ that.close();
+ // refresh password expiration field
+ var facet = IPA.current_entity.get_facet();
+ facet.refresh();
+ },
+ function(xhr, text_status, error_thrown) {
+ that.close();
+ }
+ );
};
that.set_password = function(pkey, current_password, password, on_success, on_error) {
@@ -560,6 +597,8 @@ IPA.user_password_widget = function(spec) {
command.execute();
};
+ that.create_buttons();
+
return that;
};
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 30ab91640..2ed57f69a 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -564,6 +564,7 @@ class i18n_messages(Command):
"current_password": _("Current Password"),
"current_password_required": _("Current password is required"),
"new_password": _("New Password"),
+ "new_password_required": _("New password is required"),
"password_change_complete": _("Password change complete"),
"password_must_match": _("Passwords must match"),
"reset_password": _("Reset Password"),