CE1.9.1 Verifique se a sua senha corresponde ao problema durante o registro do usuário

23

Estou encontrando esse problema no CE1.9.1.

Quando um usuário se registra (não importa se é durante a finalização da compra ou no link Criar uma conta), o usuário continua recebendo o erro de incompatibilidade de senha, mesmo que a senha seja redigitada corretamente.

A validação do formulário não indica uma falha de correspondência, mas quando um usuário clica em Registrar, ele retorna o erro de incompatibilidade.

Não há erros no console do chrome ...

Encontrei o seguinte: "Certifique-se de que suas senhas correspondem" - Erro de senha no formulário de checkout com novo registro

Mas não acredito que seja o mesmo erro.

Preciso corrigi-lo em breve, qualquer ajuda é muito apreciada!

Conta
fonte
Isso corrige o erro no carrinho de compras, mas para que a seção "Minha conta" funcionasse, tive que desativar o compilador (admin | system | tools | compilation). (Re-compilar provavelmente iria funcionar bem)
wiredoug

Respostas:

24

As crianças da classe Mage_Customer_Model_Customerdevem usar em getPasswordConfirmation()vez degetConfirmation()

Upd: Na aula Mage_Customer_Model_Customer, o método validate()foi alterado

Antes da v1.9.1:

$confirmation = $this->getConfirmation();

Depois de:

$confirmation = $this->getPasswordConfirmation();


Bogdan
fonte
Observe também que você deve verificar também qualquer substituição de controlador, não apenas modelos que estendem essa classe!
benz001 25/05
2
A mente desconhece como algo tão crítico que impede uma loja de comércio eletrônico que permite compras pode passar pelo controle de qualidade e ser lançado oficialmente.
Mikemike
1
Além disso, em algumas extensões, é necessário alterar setConfirmation () para setPasswordConfirmation (). Esse foi o FireCheckout no meu caso. Classe: TM_FireCheckout_Model_Type_Standard, método: _validateCustomerData ().
precisa saber é o seguinte
5

Finalmente, eu fui capaz de resolver o problema.

Devo mencionar que não é realmente bom que os arquivos principais do magento tenham esse tipo de problema quando protegem as senhas, acho que os desenvolvedores principais esqueceram algumas coisas simples.

Ok, então, para corrigir esse problema, você deve substituir o modelo principal de clientes no local app/code/local/Mage/Customer/Model/Customer.php. Nesse passo, vá para a linha não. 843 (se você ainda não substituiu) ou vá para a linha if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) { $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6); }e adicione o seguinte código abaixo desse bloco:

//To match passwords in both Create account and Checkout register pages start
    if ( Mage::app()->getRequest()->getServer('HTTP_REFERER') == Mage::getUrl('customer/account/create') )
      $confirmation = $this->getPasswordConfirmation();
    else
      $confirmation = $this->getConfirmation();
    //To match passwords in both Create account and Checkout register pages end

Depois disso, a senha e a senha de confirmação corresponderão nas páginas "Checkout" e "Criar conta".

Espero que isso possa ajudar alguém.

HD
fonte
3

Eu tenho uma extensão que estava substituindo o AccountController.php e estava tendo o mesmo problema para as plataformas Magento abaixo da versão 1.9.1

Minha solução foi;

if (version_compare(Mage::getVersion(), '1.9.1', '<=')) {        
$customer->setPasswordConfirmation($request->getPost('confirmation'));
}

if (version_compare(Mage::getVersion(), '1.9.0', '>=')) {
$customer->setConfirmation($request->getPost('confirmation'));
}
BENN1TH
fonte
2

Para mim $this->getPasswordConfirmation()nem $this->getConfirmation()funcionou. Ambos retornaram uma string vazia. Então, acabei acessando o parâmetro POST diretamente, em /app/code/core/Mage/Customer/Model/Customer.php(sim, é melhor usar uma cópia em /app/code/local):

if (isset($_REQUEST['confirmation']))
    $confirmation = $_REQUEST['confirmation'];
else
    $confirmation = $this->getPasswordConfirmation();
Anse
fonte
1
ha ha crack bom :)
Keyur Shah
0

é por causa dessa alteração na atualização 1.9.1. Você precisa atualizar o código de suas extensões. As senhas dos clientes não são mais armazenadas em texto não criptografado durante o registro.

javier
fonte
Entendo, vou verificar os códigos de extensão. Obrigado!
Bill
0

Estou com o mesmo problema que estou usando extensões de terceiros para fazer o checkout, portanto, esse problema deve ser resolvido

Resolvi esse erro executando as seguintes etapas

1) no meu módulo eu procuro confirmation

2) verifique se está configurando dados para o customermodelo

3), em seguida, alterar a chave password_confirmationdeconfirmation

Sigo as etapas acima para depurar o problema e resolvê-lo.

Murtuza Zabuawala
fonte
0

Minha solução foi

$confirmation = $this->getPasswordConfirmation(); // test works for Create, fails for Checkout
    if ($password != $confirmation) {
        $confirmation = $this->getConfirmation(); // test works for Checkout fails for Create
        if ($password != $confirmation) {
            $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
        }
    }
RW-Fairport
fonte
-3

Olá amigos Este problema pode ser resolvido seguindo as etapas abaixo:

Etapa 1: Abra este arquivo /app/code/core/Mage/Customer/Model/Customer.php
Etapa 2: Encontre esta linha na Customer.php $confirmation = $this->getPasswordConfirmation(); Etapa 3: Substitua Aquela linha por $confirmation = $this->getConfirmation();

Seu problema agora está resolvido.

Mag Kart
fonte
3
A menos que isso seja realmente um bug básico, eu não recomendaria alterar os arquivos principais.
Andrew Kett 01/01