public function reset_password_from_link($params)
{
if (!isset($params['captcha'])) {
return array('error' => 'Please enter the captcha answer!');
} else {
$validate_captcha = $this->app->captcha->validate($params['captcha']);
if (!$validate_captcha) {
return array('error' => 'Invalid captcha answer!', 'captcha_error' => true);
}
}
if (!isset($params['id']) or trim($params['id']) == '') {
return array('error' => 'You must send id parameter');
}
if (!isset($params['password_reset_hash']) or trim($params['password_reset_hash']) == '') {
return array('error' => 'You must send password_reset_hash parameter');
}
if (!isset($params['pass1']) or trim($params['pass1']) == '') {
return array('error' => 'Enter new password!');
}
if (!isset($params['pass2']) or trim($params['pass2']) == '') {
return array('error' => 'Enter repeat new password!');
}
if ($params['pass1'] != $params['pass2']) {
return array('error' => 'Your passwords does not match!');
}
$data1 = array();
$data1['id'] = intval($params['id']);
$data1['password_reset_hash'] = $this->app->database_manager->escape_string($params['password_reset_hash']);
$table = $this->tables['users'];
$check = $this->get_all('single=true&password_reset_hash=[not_null]&password_reset_hash=' . $data1['password_reset_hash'] . '&id=' . $data1['id']);
if (!is_array($check)) {
return array('error' => 'Invalid data or expired link!');
} else {
$data1['password_reset_hash'] = '';
}
$this->force_save = true;
$save = $this->app->database_manager->save($table, $data1);
$save_user = array();
$save_user['id'] = intval($params['id']);
$save_user['password'] = $params['pass1'];
if (isset($check['email'])) {
$save_user['email'] = $check['email'];
}
$this->app->event_manager->trigger('mw.user.change_password', $save_user);
$this->save($save_user);
$notif = array();
$notif['module'] = 'users';
$notif['rel_type'] = 'users';
$notif['rel_id'] = $data1['id'];
$notif['title'] = "The user have successfully changed password. (User id: {$data1['id']})";
$this->app->log_manager->save($notif);
$this->session_end();
return array('success' => 'Your password have been changed!');
}