Página 1 de 1

Solicitar nova senha(Cliente)

Enviado: 24 Mai 2016, 08:45
por RPHP
Estou com o seguinte problema:
Ao tentar solicitar uma nova senha para um cliente cadastrado na Loja o Email com o link de solicitação de nova senha chega normalmente na minha caixa de email e o link redireciona também normalmente para a pagina da minha Loja para digitar a nova senha. O problema acontece quando vou tentar me logar com a nova senha, é retornado um aviso de que o usuário é invalido. Fazendo alguns testes descobri que o que acontece é que a senha antiga ainda continuava funcionando e a nova não foi adicionada. Alguém poderia me ajudar ?
Desde já obrigado!

Re: Solicitar nova senha(Cliente)

Enviado: 24 Mai 2016, 09:49
por Manoel Vidal
Olá.

Qual a versão do OpenCart?

Re: Solicitar nova senha(Cliente)

Enviado: 24 Mai 2016, 16:38
por RPHP
Estou com a versão 2.2.0.0

Re: Solicitar nova senha(Cliente)

Enviado: 27 Mai 2016, 09:37
por RPHP
Alguém mais está com esse Problema?

Re: Solicitar nova senha(Cliente)

Enviado: 10 Jun 2016, 10:03
por RPHP
Bom dia pessoal. Já fiz vários testes aqui para tentar descobrir o porque a senha não é modificada, mas sem sucesso!
Alguém tem alguma informação sobre esse problema?
Desde já Obrigado!

Re: Solicitar nova senha(Cliente)

Enviado: 10 Out 2016, 11:38
por João Vitor
Olá, tive o mesmo problema aqui! O e-mail chega ok, você troca a senha mas ele não atualiza no banco...

Solucionei da seguinte forma:
O arquivo que controla o reset, quando preenche a nova senha e envia é: catalog/controller/account/reset.php

Neste arquivo ele faz o load do model account/customer e usa a função editPassword, é a função usada para mudar a senha quando o usuário esta logado, mas ela recebe como parametro email e a nova senha, e usa na query o email para achar o usuario e trocar a senha. O problema é que quando é pra resetar a senha ele está passando o id como parametro, não o email.

Logo eu criei uma função resetPassword que usa o id e problema resolvido.

Solução:
Em catalog/model/account/customer.php adicione logo após isto:
Código: Selecionar todos
public function editPassword($email, $password) {
		$this->db->query("UPDATE " . DB_PREFIX . "customer SET salt = '" . $this->db->escape($salt = token(9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($password)))) . "', code = '' WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "'");
}
Isto:
Código: Selecionar todos
public function resetPassword($customer_id, $password) {
		$this->db->query("UPDATE " . DB_PREFIX . "customer SET salt = '" . $this->db->escape($salt = token(9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($password)))) . "', code = '' WHERE customer_id = '" . (int)$customer_id . "'");
}
E em catalog/controller/account/reset.php troque isto:
Código: Selecionar todos
$this->model_account_customer->editPassword($customer_info['customer_id'], $this->request->post['password']);
Por isto:
Código: Selecionar todos
$this->model_account_customer->resetPassword($customer_info['customer_id'], $this->request->post['password']);
Versão do opencart: 2.2.0.0

Espero ter ajudado.

Re: Solicitar nova senha(Cliente)

Enviado: 16 Nov 2016, 13:02
por RPHP
Perfeito. Fiz conforme você passou e o problema foi resolvido.
Parabéns e Muito Obrigado :D
Ajudou de mais..

Abraço