Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Avatar do usuário
Por Gusting
#82235
Olá,

Por mais que na versão 1.3.3 do OCBr não envie e-mail caso o e-mail não esteja registrado no sistema, mesmo assim faz com que deixe em aberto, sem receber um feedback se de fato o e-mail está cadastrado ou não. Pois só recebe uma notificação de "Caso seu e-mail esteja cadastrado..."

Enfim, uma contribuiçãozinha boba, mas que refina o Esqueci a Senha:

Vá no controller do Forgotten (catalog > controller > account > forgotten.php) e procure pela linha onde está o "REQUEST_METHOD"
e acrescente embaixo dele um if($this->searchEmail() == true).

Ficando assim:
Código: Selecionar todos
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
	if($this->searchEmail() == true){
		$customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']);

		if ($customer_info) {
			$this->model_account_customer->editCode($this->request->post['email'], token(40));
		}

		$this->session->data['success'] = $this->language->get('text_success');

		$this->response->redirect($this->url->link('account/login', '', true));
	}
}

E por final, acrescente a função searchEmail no final do arquivo (ou seja, deve ficar embaixo do validate()).
Código: Selecionar todos
protected function searchEmail(){
	$customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']);
		
	if(count($customer_info) > 0){
		return true;
	}
	else{
		$this->error['warning'] = $this->language->get('error_invalidM');
	}
}

E assim vá para o Language do Forgotten (catalog > language > pt-br > account > forgotten.php). Edite a linha de "text_success", do jeito que você quiser. E acrescente a linha "error_invalidM" com uma mensagem de erro pelo fato de não estar cadastrado no sistema. Ficando mais ou menos assim:
Código: Selecionar todos
<?php
// Heading
$_['heading_title']   = 'Solicitar nova senha';

// Text
$_['text_account']    = 'Minha conta';
$_['text_forgotten']  = 'Solicitar nova senha';
$_['text_your_email'] = 'Seu e-mail já cadastrado em nossa loja';
$_['text_email']      = 'Informe abaixo o e-mail cadastrado em sua conta. Depois pressione o botão <b>Continuar</b> para enviarmos um e-mail com o link para redefinir sua senha.';
$_['text_success']    = 'Você receberá um e-mail contendo o link para redefinir sua senha, caso não receba, por favor verifique na caixa de <b>Spam</b>.';

// Entry
$_['entry_email']     = 'Seu e-mail';
$_['entry_password']  = 'Nova senha';
$_['entry_confirm']   = 'Repetir a senha';

// Error
$_['error_email']     = '<b>Atenção</b>: O e-mail informado não é válido.';
$_['error_approved']  = '<b>Atenção</b>: A sua conta necessita de aprovação antes que você possa acessá-la.';
$_['error_password']  = 'A senha deve ter entre 4 e 20 caracteres.';
$_['error_confirm']   = 'A senha repetida está errada.';
$_['error_invalidM']  = '<b>Atenção</b>: Seu e-mail parece que não possuí registro no nosso sistema. Por favor, registre-se ou entre em contato.';

Lembrando que fiz essa modificaçãozinha baseado:
OC 3.0.3.1
OCBr 1.3.3


Ou seja: não realizei testes em versão en-gb ou em versões inferiores ao 3.x. Mas creio que seja a mesma lógica.

Sou péssimo com o back-end, então aceito contribuições e aperfeiçoamento do código.


Paz,
Gusting

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]