hcodebr / ecommerce

78 stars 70 forks source link

Criação de usuários no PHP #6

Open amjrock80 opened 4 years ago

amjrock80 commented 4 years ago

Bom Dia

Entro no administrativo crio o usuário normalmente, faz a entrada no banco tudo certinho tanto no persons como no users. Quando tento logar na área administrativa me retorno a mensagem da linha do código que a senha esta incorreta.

janiohr commented 4 years ago

Eu tive o mesmo erro, não sei se já conseguiu a solução. O problema é que na hora de enviar a senha é realizado o hash da senha 2 vezes,

a primeira no arquivo admin-users.php

$app->post("/admin/users/create", function() 
{
    User::verifyLogin();
    $user = new User();
    $_POST["inadmin"] = (isset($_POST["inadmin"]))?1:0;
    $_POST['despassword'] = User::getPasswordHash($_POST['despassword']);  //1º hash
    $user->setData($_POST);
    $user->save();
    header("Location: /admin/users");
    exit;
});

e depois no arquivo da classe User:

public function save()
    {

            print_r($this->getdespassword());
        $sql = new Sql();
        $results = $sql->select("CALL sp_users_save(:desperson, :deslogin, :despassword, :desemail, :nrphone, :inadmin)", array(
            ":desperson"=>utf8_decode($this->getdesperson()),
            ":deslogin"=>$this->getdeslogin(),
            ":despassword"=>User::getPasswordHash($this->getdespassword()),  //2º hash
            ":desemail"=>$this->getdesemail(),
            ":nrphone"=>$this->getnrphone(),
            ":inadmin"=>$this->getinadmin()
        ));
        $this->setData($results[0]);
    }

A solução é retirar um dos dois hashs, eu optei por tirar o hash na chamada do $_post, o arquivo admin-users.php e deixar que a classe faça o hash.