Thursday, November 14, 2013

how to create custom user passwor rest page in joomla using ajax out side joomla root folder

 hey guy this code for joomla  reset passwor page in joomla using ajax out side joomla root like old password to your own password change. custom ajax page
setp->1
create your reset component paste in your rest view page

 <script type="text/javascript" language="javascript">
  $(document).ready(function() {
      $("#driver").click(function(event){
        var currentpass=$('#oldpassword').val();
        var newpass=$('#newpass').val();
       
        var conformpass=$('#conformpass').val();
        var userid=$('#userid').val(); 
        var username=$('#username').val();
       
        if(currentpass==''){
            $('#oldpassword').addClass('invalid');
            return false;
            }else if(newpass==''){
                $('#oldpassword').removeClass('invalid');
                $('#newpass').addClass('invalid');
            return false;
                }
            else if(conformpass==''){
                $('#conformpass').addClass('invalid');
            return false;
                }
            else{
            $('#oldpassword').removeClass('invalid');
            $('#newpass').removeClass('invalid');
            $('#conformpass').removeClass('invalid');
                }
       
         $('#loading').addClass('resetloader');
          $.post(
             "http://joomla/ajaxresetpassword.php",
             { oldpass: currentpass,newpass:newpass,confirmpass:conformpass,userid:userid,username:username,},
             function(data) {
           
           
             $('#loading').removeClass('resetloader');
             if(data=='passwrod has been changed'){
                $('#oldpassword').val('');
                $('#newpass').val('');
                $('#conformpass').val('');
           
             }
                 alert(data);
                $('#stage').html(data);
             }

          );
      });
   });
   </script>
      <div id="tab2" class="tab_content">
      <form action="" method="get" name="" >
  <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr class="tr-spac">
      <td class="left-td gray-color">Username</td>
      <td class="right-td"><?php echo $user->username;?></td>
     <input type="hidden" value="<?php echo $this->user_state->virtuemart_user_id;?>" name="userid" id="userid" />
      <input type="hidden" value="<?php echo $user->username;?>" name="username" id="username" />
    </tr>
    <tr class="tr-spac">
      <td colspan="2" class="left-td gray-color"><a href="#">Current Password</a></td>
      <td class="right-td"><input type="password" name="oldpassword" id="oldpassword" class="inputbox"  /></td>
        </tr>
    <tr class="tr-spac">
     <td colspan="2" class="left-td gray-color"><a href="#">New Password</a></td>
     <td class="right-td"><input type="password" name="newpass" id="newpass" class="inputbox"  /></td>
    </tr>
    <tr class="tr-spac" style="border-bottom:none;">
       <td colspan="2" class="left-td gray-color" style="padding-bottom:16px;"><a href="#">Confirm Password</a></td>
       <td class="right-td"><input type="password" name="conformpass" id="conformpass" class="inputbox"  /><div id="loading">&nbsp;</div></td>
    </tr>
   
    <tr >
      <td colspan="2">
     <div class="editbg" style="float:right;">
    <a href="#" id="driver" >Save</a>     
  
    </td>
    </tr>
  </table>       
  </form>
  </div>


-------------------------------------------------------------------------------------------------------

create joomla/ajaxresetpassword.php
<?php

//access joomla db and other liabray class
################################################################################
#######
define('_JEXEC',1);
define('DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ].'/joomla' );

require_once( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
require_once( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
require_once( JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php' );
$mainframe =& JFactory::getApplication('site');
$db =& JFactory::getDBO();
################################################################################
#########

//get user post request
########################################################
 $currentpass          =JRequest::getVar('oldpass');   #
                                                        #
 $newpassword          =JRequest::getVar('newpass');    #
 $confirmpassword      =JRequest::getVar('confirmpass');#
 $ExistUserid          =JRequest::getVar('userid');     #
 $ExistUsername        =JRequest::getVar('username');   #
##############################################
//store temp session user id and username for check exist
###############################################
 $check_user_username   = $ExistUsername;      #
 $check_user_id         = $ExistUserid;        #
                                               #
###############################################
 //retrive user current password from database for checking
#########################################################################
##################################### 
   $TablePrefix=$db->getPrefix();
   $TableName=$TablePrefix.'users';
   $sqlquery="select password from $TableName where username='$check_user_username'  and id=$check_user_id";
 
   $db->setQuery($sqlquery);
   $result=$db->loadObject();
  

checkpassword($currentpass,$newpassword,$confirmpassword,$result->password,$check_user_id,
$TableName,$db);


//785f9b9a8385a739b05cc92105dda7ca:JtjrzbzPQNQAYWKVvORRawlV0TwaGWzm

function checkpassword(&$currentpass,&$newpass,&$confimpass,&$retrivepass,&$userid,&$TableName,&$db){
      $makepass_array = explode(':',$retrivepass);
      $joomla_pass = $makepass_array[0];
      $joomla_salt = $makepass_array[1];         
      $comparepass=md5($currentpass.$joomla_salt);
      if($joomla_pass == $comparepass)
        {
                if($newpass==$confimpass)
                {
       
                    $gnrtnewpas=md5($confimpass.$joomla_salt);           
                    $gnrtnewpas = $gnrtnewpas.':'.$joomla_salt;                   
                    $updtquery="UPDATE $TableName SET password ='$gnrtnewpas'  where id=$userid";
                    $db->setQuery($updtquery);
                    $db->query();
                    if ($db->getErrorNum())
                    { 
                        echo $db->getErrorMsg(); 
                        return false; 
                    }
          echo "passwrod has been changed";
          return true;
       
        }else{
            echo "Confirm password dose not match";
            return false;
        }
        }else
        { 
            echo "incorrect Current password ";
            return false;
        }


}

No comments:

Post a Comment