Забыл пароль tank_auth codeigniter

Я использую танк аутентификации в качестве обработчика входа в код воспламенителя. когда я использую функцию забытого пароля, я получаю ссылку, отправленную по почте http://xx.xx.xx/en//auth/reset_password/2/01b951fd2a02efa2d64f1fe70c2a4e3b, Когда я нажимаю на эту ссылку, она всегда говорит: "Ваш ключ активации неверен или устарел. Пожалуйста, проверьте свою электронную почту еще раз и следуйте инструкциям".

я изменил сегменты, чтобы он получил правильные сегменты, но почему-то идет не так на if ($this->form_validation->run()), Как-то хочет new_password а также confirm_new_password как почтовые данные, но по ссылке в электронном письме никакие почтовые данные не будут отправлены.

Это ошибка в аутентификации танка, есть ли быстрое исправление (tank_auth забывает шаг, что-то не настроено правильно?)

код ссылки:

function reset_password()
{
    $break =$this->uri->total_segments();
    $new_pass_key= $this->uri->segment($break);
    $user_id= $this->uri->segment($break-1);

    $this->form_validation->set_rules('new_password', 'New Password', 'trim|required|xss_clean|min_length['.$this->config->item('password_min_length', 'tank_auth').']|max_length['.$this->config->item('password_max_length', 'tank_auth').']|alpha_dash');
    $this->form_validation->set_rules('confirm_new_password', 'Confirm new Password', 'trim|required|xss_clean|matches[new_password]');
    $data['errors'] = array();

    if ($this->form_validation->run()) { //breaks here. For some reason wants to validate post data which
        if (!is_null($data = $this->tank_auth->reset_password($user_id, $new_pass_key,$this->form_validation->set_value('new_password')))) {    // success

            $data['site_name'] = $this->config->item('website_name', 'tank_auth');

            // Send email with new password
            $this->_send_email('reset_password', $data['email'], $data);

            $this->_show_message($this->lang->line('auth_message_new_password_activated').' '.anchor('/auth/login/', 'Login'));

        } else {                                                        // fail
            $this->_show_message($this->lang->line('auth_message_new_password_failed'));
        }
    } else {
        // Try to activate user by password key (if not activated yet)
        if ($this->config->item('email_activation', 'tank_auth')) {
            $this->tank_auth->activate_user($user_id, $new_pass_key, FALSE);
        }

        if (!$this->tank_auth->can_reset_password($user_id, $new_pass_key)) {
            $this->_show_message($this->lang->line('auth_message_new_password_failed'));
        }
    }
    $this->load->view('auth/reset_password_form', $data);
}

1 ответ

Решение

Ваш new_pass_key а также $user_id я не прав

Это должно работать из коробки с этим:

$user_id    = $this->uri->segment(3);
$new_pass_key   = $this->uri->segment(4);

РЕДАКТИРОВАТЬ:

$user_id    = $this->uri->segment(4);
$new_pass_key   = $this->uri->segment(5);

Почему вы изменили это, кстати?

Другие вопросы по тегам