diff --git a/phpgwapi/inc/phpgw_auth_http.inc.php b/phpgwapi/inc/phpgw_auth_http.inc.php index 29b7ced805..20c2c3324d 100644 --- a/phpgwapi/inc/phpgw_auth_http.inc.php +++ b/phpgwapi/inc/phpgw_auth_http.inc.php @@ -23,5 +23,9 @@ return False; } } + function change_password($old_passwd, $new_passwd) { + global $phpgw_info, $phpgw; + return $old_passwd; + } } ?> \ No newline at end of file diff --git a/phpgwapi/inc/phpgw_auth_ldap.inc.php b/phpgwapi/inc/phpgw_auth_ldap.inc.php index 6ae5536c41..d8abe0048f 100644 --- a/phpgwapi/inc/phpgw_auth_ldap.inc.php +++ b/phpgwapi/inc/phpgw_auth_ldap.inc.php @@ -43,5 +43,23 @@ // dn not found or password wrong return False; } + + function change_password($old_passwd, $new_passwd) { + global $phpgw_info, $phpgw; + $ldap = ldap_connect($phpgw_info["server"]["ldap_host"]); + + if (! @ldap_bind($ldap, $phpgw_info["server"]["ldap_root_dn"], $phpgw_info["server"]["ldap_root_pw"])) { + echo "
Error binding to LDAP server. Check your config"; + $phpgw->common->phpgw_exit(); + } + + $encrypted_passwd = $phpgw->common->encrypt_password($new_passwd); + $entry["userpassword"] = $encrypted_passwd + $entry["phpgw_lastpasswd_change"] = time(); + + $dn = $phpgw_info["user"]["account_dn"]; + @ldap_modify($ldap, $dn, $entry); + return $encrypted_passwd; + } } ?> diff --git a/phpgwapi/inc/phpgw_auth_mail.inc.php b/phpgwapi/inc/phpgw_auth_mail.inc.php index 915e5302a5..88f9922427 100644 --- a/phpgwapi/inc/phpgw_auth_mail.inc.php +++ b/phpgwapi/inc/phpgw_auth_mail.inc.php @@ -39,5 +39,9 @@ return True; } } + function change_password($old_passwd, $new_passwd) { + global $phpgw_info, $phpgw; + return $old_passwd; + } } ?> \ No newline at end of file diff --git a/phpgwapi/inc/phpgw_auth_sql.inc.php b/phpgwapi/inc/phpgw_auth_sql.inc.php index 9f8348f2ea..b983b4a8c3 100644 --- a/phpgwapi/inc/phpgw_auth_sql.inc.php +++ b/phpgwapi/inc/phpgw_auth_sql.inc.php @@ -35,5 +35,16 @@ return False; } } + + function change_password($old_passwd, $new_passwd) { + global $phpgw_info, $phpgw; + $encrypted_passwd = md5($new_passwd); + $phpgw->db->query("update accounts set account_pwd='" . md5($new_passwd) . "' " + . "where account_lid='" . $phpgw_info["user"]["userid"] . "'",__LINE__,__FILE__); + $phpgw->db->query("update accounts set account_lastpwd_change='" . time() . "' where account_id='" + . $phpgw_info["user"]["account_id"] . "'",__LINE__,__FILE__); + + return $encrypted_passwd; + } } ?> diff --git a/preferences/changepassword.php b/preferences/changepassword.php index 55c6a8ba87..c8067524b2 100755 --- a/preferences/changepassword.php +++ b/preferences/changepassword.php @@ -73,31 +73,9 @@ $phpgw->common->phpgw_exit(); } - if ($phpgw_info["server"]["auth_type"] == "sql") { - $phpgw->db->query("update accounts set account_pwd='" . md5($n_passwd) . "' " - . "where account_lid='" . $phpgw_info["user"]["userid"] . "'",__LINE__,__FILE__); - } - - if ($phpgw_info["server"]["auth_type"] == "ldap") { - $ldap = ldap_connect($phpgw_info["server"]["ldap_host"]); - - if (! @ldap_bind($ldap, $phpgw_info["server"]["ldap_root_dn"], $phpgw_info["server"]["ldap_root_pw"])) { - echo "
Error binding to LDAP server. Check your config"; - $phpgw->common->phpgw_exit(); - } - - $entry["userpassword"] = $phpgw->common->encrypt_password($n_passwd); - $entry["phpgw_lastpasswd_change"] = time(); - - $dn = $phpgw_info["user"]["account_dn"]; - @ldap_modify($ldap, $dn, $entry); - } - - // Update there last password change - $phpgw->db->query("update accounts set account_lastpwd_change='" . time() . "' where account_id='" - . $phpgw_info["user"]["account_id"] . "'",__LINE__,__FILE__); - - $phpgw_info["user"]["passwd"] = $n_passwd; + $o_passwd = $phpgw_info["user"]["passwd"]; + $phpgw_info["user"]["passwd"] = $phpgw->auth->change_password($o_passwd, $n_passwd); + $phpgw->accounts->sync(); Header("Location: " . $phpgw->link($phpgw_info["server"]["webserver_url"] . "/preferences/","cd=18"));