Re: [Freeipa-devel] [PATCH] 308 Added current password field.

2011-11-07 Thread Petr Vobornik

On 11/04/2011 11:29 PM, Endi Sukma Dewata wrote:

The reset password dialog for user has been modified to provide
a field to specify the current password when changing the user's
own password.

Ticket #2065


ACK ipa-2-1, master

--
Petr Vobornik

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] [PATCH] 308 Added current password field.

2011-11-07 Thread Martin Kosek
On Mon, 2011-11-07 at 13:48 +0100, Petr Vobornik wrote:
 On 11/04/2011 11:29 PM, Endi Sukma Dewata wrote:
  The reset password dialog for user has been modified to provide
  a field to specify the current password when changing the user's
  own password.
 
  Ticket #2065
 
 ACK ipa-2-1, master
 

Pushed to master, ipa-2-1.

Martin

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


[Freeipa-devel] [PATCH] 308 Added current password field.

2011-11-04 Thread Endi Sukma Dewata

The reset password dialog for user has been modified to provide
a field to specify the current password when changing the user's
own password.

Ticket #2065

--
Endi S. Dewata
From 004bd7f1676255508fe11cf87e059607978f7593 Mon Sep 17 00:00:00 2001
From: Endi S. Dewata edew...@redhat.com
Date: Fri, 4 Nov 2011 13:48:22 -0500
Subject: [PATCH] Added current password field.

The reset password dialog for user has been modified to provide
a field to specify the current password when changing the user's
own password.

Ticket #2065
---
 install/ui/test/data/ipa_init.json |2 ++
 install/ui/user.js |   34 --
 ipalib/plugins/internal.py |2 ++
 3 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 9ebb52aaffa1e412b014d12cfd8e330163e28a8d..44e6b8fc679fda6f8a8c1200c2d121df130cac54 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -332,6 +332,8 @@
 }
 },
 password: {
+current_password: Current Password,
+current_password_required: Current password is required,
 new_password: New Password,
 password_change_complete: Password change complete,
 password_must_match: Passwords must match,
diff --git a/install/ui/user.js b/install/ui/user.js
index 60958cb43cf3f853c370554162600733f3d3d90d..04140afd9a8c00f89122186fcdf0c42e15c336a6 100644
--- a/install/ui/user.js
+++ b/install/ui/user.js
@@ -325,18 +325,29 @@ 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 dialog = IPA.dialog({
 title: IPA.messages.password.reset_password,
 width: 400
 });
 
-var password1 = dialog.add_field(IPA.text_widget({
+if (that.self_service) {
+dialog.add_field(IPA.text_widget({
+name: 'current_password',
+label: IPA.messages.password.current_password,
+type: 'password'
+}));
+}
+
+dialog.add_field(IPA.text_widget({
 name: 'password1',
 label: IPA.messages.password.new_password,
 type: 'password'
 }));
 
-var password2 = dialog.add_field(IPA.text_widget({
+dialog.add_field(IPA.text_widget({
 name: 'password2',
 label: IPA.messages.password.verify_password,
 type: 'password'
@@ -350,6 +361,16 @@ IPA.user_password_widget = function(spec) {
 var record = {};
 dialog.save(record);
 
+var current_password;
+
+if (that.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];
 
@@ -359,6 +380,7 @@ IPA.user_password_widget = function(spec) {
 }
 
 that.set_password(
+current_password,
 new_password,
 function(data, text_status, xhr) {
 alert(IPA.messages.password.password_change_complete);
@@ -382,20 +404,20 @@ IPA.user_password_widget = function(spec) {
 dialog.open(that.container);
 };
 
-that.set_password = function(password, on_success, on_error) {
-var user_pkey = IPA.nav.get_state('user-pkey');
+that.set_password = function(current_password, password, on_success, on_error) {
 
 var args;
-if (user_pkey === IPA.whoami.uid[0]) {
+if (that.self_service) {
 args = [];
 } else {
-args = [user_pkey];
+args = [that.pkey];
 }
 
 var command = IPA.command({
 method: 'passwd',
 args: args,
 options: {
+current_password: current_password,
 password: password
 },
 on_success: on_success,
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 8c5b0955b1c2e2c1c0c2b15c0e026e24f9b3eefe..63eeba057eef9177db08129b49fdf266898df815 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -426,6 +426,8 @@ class i18n_messages(Command):
 },
 },
 password: {
+current_password: _(Current Password),
+current_password_required: _(Current password is required),
 new_password: _(New Password),