From b1dccb033ebbb67649a801fac40e03ff5344e18c Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Thu, 19 Jun 2008 14:07:57 +0000 Subject: [PATCH] =?UTF-8?q?-=20LSformElement=5Fpassword=20:=20Ajout=20d'un?= =?UTF-8?q?e=20fonctionnalit=C3=A9=20de=20v=C3=A9rification=20du=20mot=20?= =?UTF-8?q?=20=20de=20passe=20dans=20l'annuaire.=20-=20LSldapObject=20:=20?= =?UTF-8?q?=20=20->=20Ajout=20d'une=20m=C3=A9thode=20isNew()=20=20=20->=20?= =?UTF-8?q?Correction/mise=20=C3=A0=20jour=20des=20commentaires=20-=20LSfo?= =?UTF-8?q?rm.js=20:=20Correction=20d'un=20bug=20dans=20la=20m=C3=A9thode?= =?UTF-8?q?=20=20=20onLSformElement=5Fpassword=5Fgenerate=5FbtnClick?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../class/class.LSformElement_password.php | 11 ++++ trunk/includes/class/class.LSldapObject.php | 32 +++++++++- trunk/includes/js/LSform.js | 59 +++++++++++++++++- trunk/index_ajax.php | 13 ++++ trunk/templates/css/LSform.css | 2 +- trunk/templates/images/verify.png | Bin 0 -> 679 bytes 6 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 trunk/templates/images/verify.png diff --git a/trunk/includes/class/class.LSformElement_password.php b/trunk/includes/class/class.LSformElement_password.php index b6661af8..c7d5087e 100644 --- a/trunk/includes/class/class.LSformElement_password.php +++ b/trunk/includes/class/class.LSformElement_password.php @@ -89,6 +89,10 @@ class LSformElement_password extends LSformElement { $return['html'] .= $autogenerate_html; $id = "LSformElement_password_view_btn_".$this -> name."_".$numberId; $return['html'] .= "\n"; + if (!$this -> attr_html -> attribute -> ldapObject-> isNew()) { + $id = "LSformElement_password_verify_btn_".$this -> name."_".$numberId; + $return['html'] .= "\"".('Vérifier\n"; + } if (!empty($this -> values)) { $return['html'] .= "* "._('Modification uniquement')."."; @@ -109,6 +113,13 @@ class LSformElement_password extends LSformElement { function generatePassword() { return generatePassword($this -> params['html_options']['chars'],$this -> params['html_options']['lenght']); } + + function verifyPassword($pwd) { + if ($this -> attr_html -> attribute -> ldapObject -> isNew()) { + return false; + } + return $GLOBALS['LSsession'] -> checkUserPwd($this -> attr_html -> attribute -> ldapObject,$pwd); + } } ?> diff --git a/trunk/includes/class/class.LSldapObject.php b/trunk/includes/class/class.LSldapObject.php index 62a09bce..2f367cb3 100644 --- a/trunk/includes/class/class.LSldapObject.php +++ b/trunk/includes/class/class.LSldapObject.php @@ -574,7 +574,7 @@ class LSldapObject { * @param[in] $basedn string DN de base pour la recherche * @param[in] $params array Paramètres de recherche au format Net_LDAP2::search() * - * @retval array Tableau d'objet correspondant au resultat de la recherche + * @retval array Tableau d'objets correspondant au resultat de la recherche */ function listObjects($filter='',$basedn=NULL,$params=array()) { $retInfos=array(); @@ -769,6 +769,17 @@ class LSldapObject { return $retInfos; } + + /** + * Recherche un objet à partir de la valeur exact de son RDN + * + * @author Benjamin Renard + * + * @param[in] $name string Valeur de son RDN + * @param[in] $basedn string Le DN de base de la recherche + * + * @retval array Tableau d'objets correspondant au resultat de la recherche + */ function searchObject($name,$basedn=NULL) { $filter = $this -> config['rdn'].'='.$name; return $this -> listObjects($filter,$basedn); @@ -864,6 +875,8 @@ class LSldapObject { /** * Retourne le type de l'objet * + * @author Benjamin Renard + * * @retval string Le type de l'objet ($this -> type_name) */ function getType() { @@ -873,6 +886,8 @@ class LSldapObject { /** * Retourne qui est l'utilisateur par rapport à cet object * + * @author Benjamin Renard + * * @retval string 'admin'/'self'/'user' pour Admin , l'utilisateur lui même ou un simple utilisateur */ function whoami() { @@ -884,6 +899,8 @@ class LSldapObject { /** * Retourne le label de l'objet * + * @author Benjamin Renard + * * @retval string Le label de l'objet ($this -> config['label']) */ function getLabel() { @@ -894,11 +911,24 @@ class LSldapObject { /** * Supprime l'objet dans l'annuaire * + * @author Benjamin Renard + * * @retval boolean True si l'objet à été supprimé, false sinon */ function remove() { return $GLOBALS['LSldap'] -> remove($this -> getDn()); } + + /** + * L'objet est-il nouveau + * + * @author Benjamin Renard + * + * @retval boolean True si l'objet est nouveau, false sinon + */ + function isNew() { + return (!$this -> dn); + } } ?> diff --git a/trunk/includes/js/LSform.js b/trunk/includes/js/LSform.js index cb0ce1d0..d377f9f3 100644 --- a/trunk/includes/js/LSform.js +++ b/trunk/includes/js/LSform.js @@ -32,7 +32,14 @@ var LSform = new Class({ $$('img.LSformElement_password_view_btn').each(function(el) { el.addEvent('click',this.onLSformElement_password_view_btnClick.bind(this,el)); }, this); + + this.LSformElement_password_background_color = []; + this.initialiseLSformElement_password_generate(); + + $$('img.LSformElement_password_verify_btn').each(function(el) { + el.addEvent('click',this.onLSformElement_password_verify_btnClick.bind(this,el)); + }, this); this.initialiseLSformElement_select_object(); }, @@ -49,6 +56,8 @@ var LSform = new Class({ initialiseLSformElement_password_generate: function() { $$('input.LSformElement_password_generate').each(function(el) { + this.LSformElement_password_background_color[el.id] = el.getStyle('background-color'); + el.addEvent('click',this.onLSformElement_password_verify_inputClick.bind(this,el)); el.addEvent('keyup',this.onLSformElement_password_generate_inputKeyUp.bind(this,el)); }, this); }, @@ -219,7 +228,7 @@ var LSform = new Class({ var getAttrNameAndIdValues = getAttrNameAndId.exec(img.id); var attrName = getAttrNameAndIdValues[1]; var fieldId = 'LSformElement_password_' + attrName + '_' + getAttrNameAndIdValues[2]; - var viewBtnId = 'LSformElement_password_view_btn_userPassword_' + getAttrNameAndIdValues[2]; + var viewBtnId = 'LSformElement_password_view_btn_' + attrName + '_' + getAttrNameAndIdValues[2]; var data = { template: 'LSform', @@ -301,6 +310,54 @@ var LSform = new Class({ input.remove(); this.initialiseLSformElement_password_generate(); return newInput; + }, + + onLSformElement_password_verify_btnClick: function(img) { + var getAttrNameAndId = /LSformElement_password_verify_btn_(.*)_([0-9]*)/ + var getAttrNameAndIdValues = getAttrNameAndId.exec(img.id); + var attrName = getAttrNameAndIdValues[1]; + var fieldId = 'LSformElement_password_' + attrName + '_' + getAttrNameAndIdValues[2]; + var verifyBtnId = 'LSformElement_password_verify_btn_' + attrName + '_' + getAttrNameAndIdValues[2]; + + var data = { + template: 'LSform', + action: 'verifyPassword', + attribute: attrName, + objecttype: $('LSform_objecttype').value, + idform: $('LSform_idform').value, + fieldId: fieldId, + fieldValue: $(fieldId).value, + objectdn: $('LSform_objectdn').value + }; + LSdebug(data); + data.imgload=varLSdefault.loadingImgDisplay(img); + new Ajax('index_ajax.php', {data: data, onComplete: this.onLSformElement_password_verify_btnClickComplete.bind(this)}).request(); + }, + + onLSformElement_password_verify_btnClickComplete: function(responseText, responseXML) { + var data = Json.evaluate(responseText); + if ( data ) { + if ( typeof(data.LSerror) != "undefined" ) { + varLSdefault.loadingImgHide(data.imgload); + varLSdefault.displayError(data.LSerror); + return; + } + else { + varLSdefault.loadingImgHide(data.imgload); + if (data.verifyPassword) { + // ok + $(data.fieldId).setStyle('background-color','#73F386'); + } + else { + // nok + $(data.fieldId).setStyle('background-color','#f59a67'); + } + } + } + }, + + onLSformElement_password_verify_inputClick: function(input) { + input.setStyle('background-color',this.LSformElement_password_background_color[input.id]); } }); diff --git a/trunk/index_ajax.php b/trunk/index_ajax.php index 313b8e8b..085ff355 100644 --- a/trunk/index_ajax.php +++ b/trunk/index_ajax.php @@ -101,6 +101,19 @@ if (!isset($_ERRORS)) { } } break; + case 'verifyPassword': + if ((isset($_REQUEST['attribute'])) && (isset($_REQUEST['objecttype'])) && (isset($_REQUEST['fieldId'])) && (isset($_REQUEST['fieldValue'])) && (isset($_REQUEST['idform'])) && (isset($_REQUEST['objectdn'])) ) { + $object = new $_REQUEST['objecttype'](); + $form = $object -> getForm($_REQUEST['idform']); + $object -> loadData($_REQUEST['objectdn']); + $field=$form -> getElement($_REQUEST['attribute']); + $val = $field -> verifyPassword($_REQUEST['fieldValue']); + $data = array( + 'verifyPassword' => $val, + 'fieldId' => $_REQUEST['fieldId'] + ); + } + break; } break; case 'LSrelation': diff --git a/trunk/templates/css/LSform.css b/trunk/templates/css/LSform.css index 9e5d94a8..50773db3 100644 --- a/trunk/templates/css/LSform.css +++ b/trunk/templates/css/LSform.css @@ -74,6 +74,6 @@ li.LSformElement_select_object_addBtn { text-align: center; } -img.LSformElement_select_object_deleteBtn, img.LSformElement_password_view_btn, img.LSformElement_password_generate_btn { +img.LSformElement_select_object_deleteBtn, img.LSformElement_password_view_btn, img.LSformElement_password_generate_btn, img.LSformElement_password_verify_btn { cursor: pointer; } diff --git a/trunk/templates/images/verify.png b/trunk/templates/images/verify.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8204af156dcaa93fb80143717c8894a586774f GIT binary patch literal 679 zcmV;Y0$BZtP)}SsPR>ZNH7>oZDE@tO)zS}tOzLs*7*_U2LziGsj{-j#a56ArVvC0 zwUPw!tx*)8xV~;?4&22hkrX*FoHKK0zWHYOE++^A{Lhh{JK1bjfq<{j-kwgUr+7a> z!{@1v_Yb^3qhrLcX#X? z#r_H)&Love83Rft!?_uVxNIsu9*>t9P_kIWaU4q)V-ktvG6NBS<}DNo(CKtQuh+Ak zxZQ4+Q>)dW*=)jaI5fm!u@Cin{nG=0-EIfzbej3mXcX4#HFUdO21wwcP>3ydFc@&9 zQt2b=!gw#FR4Vlgg=5U;^YG^S8d5hmP_0&hMCI{#s0b#L33Ugn)w;t5S3J+p?-|gn z#bOaO8V&OUfdKQv;V|fQI#{h%q(Vp}65wz+7MNntYPE{<5#FI>d0f^N`7{c#i^t{MPIBK0?KDG%qc&(P%JX+3j{9wPMZ`mn_NU za>EAzE|*Jcu~