Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Não consgio logar #2

Open
marcioaquilles opened this issue Feb 26, 2023 · 2 comments
Open

Não consgio logar #2

marcioaquilles opened this issue Feb 26, 2023 · 2 comments

Comments

@marcioaquilles
Copy link

Olá Mateus na parte do authprocess de usuario e senha sempre dar erro usuario e senha nã encontrados, pois o metodo está retornando um valor falso. e não entra no if do metodo autenthicate vou mandar o codigo pra me ajudar.

= $minLength; }; // Verificacao de dados minimos. if ($name && $lastname && $email && $password) { // Verificando se as senhas são iguais. if ($password === $confirmPassword) { if ($validate($password)) { //Verificando o comprimento da senha. if ($userController->findByEmail($email) === false) { //Verificando se o e-mail já existe. // Criação de token e senha $user = new \models\User(); $userToken = $user->generateToken(); $finalPassword = $user->generatePassword($password); $user->setName($name); $user->setLastname($lastname); $user->setEmail($email); $user->setPassword($finalPassword); $user->setToken($userToken); $auth = true; $userController->create($user, $auth); } else { $message->setMessage("Usuário já cadastrado no sistema. Por favor, tente outro e-mail", "msg-error", "back"); } } else { $message->setMessage("Senha deve ter no minimo 8 caracteres", "msg-error", "back"); } } else { $message->setMessage("Senhas não correspondem. Por favor, verifique as senhas digitadas", "msg-error", "back"); } } else { // Envio de mensagem de erro, caso os dados estejam incompletos no formulário. $message->setMessage("Por favor, preencha todos os campos.", "msg-error", "back"); } } else if ($filter === "login") { $email = filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL); $password = filter_input(INPUT_POST, "password", FILTER_SANITIZE_STRING); $verifyUSer = $userController->authenticateUser($email, $password); echo '
';
        var_dump($email);
        var_dump($password);
        var_dump($verifyUSer);
    echo '
'; // Tenta autenticar usuário if ($userController->authenticateUser($email, $password)) { var_dump($email); var_dump($password); $message->setMessage("Seja bem vindo!", "msg-sucess", "back"); } //else /// Redireciona o usuário caso não consiga autenticar // // $message->setMessage("Usuário e/ou e senha inválido!", "msg-error", "back"); // } } else { $message->setMessage("Informações inválidas!", "msg-error", "index.php"); } conn = $conn; $this->url = $url; $this->message = new Message($url); } public function buildUser($data) { if (!is_array($data) || empty($data)) { // Se $data não for um array ou estiver vazio, retorna null ou uma mensagem de erro. return null; // ou throw new Exception("Mensagem de erro"); } // Verifica se todas as chaves necessárias estão definidas no array. $requiredKeys = array('id', 'name', 'lastname', 'email', 'password', 'image', 'bio', 'token'); $missingKeys = array_diff($requiredKeys, array_keys($data)); if (!empty($missingKeys)) { // Se estiver faltando alguma chave, retorna null ou uma mensagem de erro. return null; // ou throw new Exception("Mensagem de erro"); } // Se todas as verificações passarem, continua a criação do objeto $user. $user = new User(); // Verifica se o objeto foi inicializado corretamente antes de chamar os métodos. if (!($user instanceof User)) { // Se o objeto não for uma instância da classe User, retorna null ou uma mensagem de erro. return null; // ou throw new Exception("Mensagem de erro"); } // Se todas as verificações passarem, continua a criação do objeto $user. $user->setId($data['id']); $user->setName($data['name']); $user->setLastname($data['lastname']); $user->setEmail($data['email']); $user->setPassword($data['password']); $user->setImage($data['image']); $user->setBio($data['bio']); $user->setToken($data['token']); return $user; } public function create(\models\User $user, $authUser = false) { try { $stmt = $this->conn->prepare("INSERT INTO users (name, lastname, email, password, token) VALUES ( :name, :lastname, :email, :password, :token)"); $stmt->bindValue(":name", $user->getName()); $stmt->bindValue(":lastname", $user->getLastname()); $stmt->bindValue(":email", $user->getEmail()); $stmt->bindValue(":password", $user->getPassword()); $stmt->bindValue(":token", $user->getToken()); $stmt->execute(); // Autenticação do usuário if ($authUser) { $this->setTokenToSession($user->getToken()); } } catch (\ErrorException $exception) { echo "Erro encontrado: " . $exception->getMessage(); } } public function update(\models\User $user, $redirect = true) { try { $stmt = $this->conn->prepare("UPDATE users SET (name, lastname, email, image, bio, token) VALUES ( :name, :lastname, :email, :image, :bio, :token) WHERE id = :id"); $stmt->bindValue(":name", $user->getName()); $stmt->bindValue(":lastname", $user->getLastname()); $stmt->bindValue(":email", $user->getEmail()); $stmt->bindValue(":image", $user->getImage()); $stmt->bindValue(":bio", $user->getBio()); $stmt->bindValue(":token", $user->getToken()); $stmt->bindValue(":id", $user->getId()); $stmt->execute(); if ($redirect) { // Redirecionar para o perfil do usuário $this->message->setMessage("Dados atualizados com sucesso!", "msg-sucess", "editprofile.php"); } } catch (\ErrorException $exception) { echo "Erro encontrado: " . $exception->getMessage(); } } public function verifyToken($protected = false) { if (!empty($_SESSION['token'])) { //Pega o token da sessão $token = $_SESSION['token']; $user = $this->findByToken($token); if ($user) { return $user; } else if ($protected) { // Redirecionar para o perfil do usuário $this->message->setMessage("Faça a autenticação para acessar essa página", "msg-error", "index.php"); } } else if ($protected) { // Redirecionar para o perfil do usuário $this->message->setMessage("Faça a autenticação para acessar essa página", "msg-error", "index.php"); } } public function setTokenToSession($token, $redirect = true) { // Salvar token na session. $_SESSION['token'] = $token; if ($redirect) { // Redirecionar para o perfil do usuário $this->message->setMessage("Seja vem vindo!", "msg-sucess", "editprofile.php"); } } public function authenticateUser($email, $password) { $user = $this->findByEmail($email); if($user) { // Checar se as senhas batem if(password_verify($password, $user->getPassword())) { // Gerar um token e inserir na session $token = $user->generateToken(); $this->setTokenToSession($token, false); // Atualizar token no usuário $user->token = $token; $this->update($user, false); return true; } else { return false; } } else { return false; } } public function findByToken($token) { if ($token != "") { try { $stmt = $this->conn->prepare("SELECT * FROM users WHERE token = :token"); $stmt->bindValue(":token", $token); $stmt->execute(); if ($stmt->rowCount() > 0) { $data = $stmt->fetch(); $user = $this->buildUser($data); return $user; } else { return false; } } catch (\ErrorException $exception) { echo "Erro encontrado: " . $exception->getMessage(); } } else { return false; } } public function destroyToken() { //Remove o token da sessão $_SESSION['token'] = ""; // Redireciona e a presenta a mensagem de sucesso $this->message->setMessage("Sessão encerrada com sucesso!", "msg-sucess", "index.php"); } public function findByEmail($email) { if ($email != "") { try { $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = :email"); $stmt->bindValue(":email", $email); $stmt->execute(); if ($stmt->rowCount() > 0) { $data = $stmt->fetch(); $user = $this->buildUser($data); } else { return false; } } catch (\ErrorException $exception) { echo "Erro encontrado: " . $exception->getMessage(); } } else { return false; } } public function findById($id) { // TODO: Implement findById() method. } public function changePassword(\models\User $user) { // TODO: Implement changePassword() method. } } id; } /** * @param mixed $id */ public function setId($id): void { $this->id = intval($id); } /** * @return mixed */ public function getName() { return $this->name; } /** * @param mixed $name */ public function setName($name): void { $this->name = $name; } /** * @return mixed */ public function getLastname() { return $this->lastname; } /** * @param mixed $lastname */ public function setLastname($lastname): void { $this->lastname = $lastname; } /** * @return mixed */ public function getEmail() { return $this->email; } /** * @param mixed $email */ public function setEmail($email): void { $this->email = $email; } /** * @return mixed */ public function getPassword() { return $this->password; } /** * @param mixed $password */ public function setPassword($password): void { $this->password = $password; } /** * @return mixed */ public function getImage() { return $this->image; } /** * @param mixed $image */ public function setImage($image): void { $this->image = $image; } /** * @return mixed */ public function getBio() { return $this->bio; } /** * @param mixed $bio */ public function setBio($bio): void { $this->bio = $bio; } /** * @return mixed */ public function getToken() { return $this->token; } /** * @param mixed $token */ public function setToken($token): void { $this->token = $token; } public function generateToken() { return bin2hex(random_bytes(50)); } public function generatePassword($password) { return password_hash($password, PASSWORD_DEFAULT); } }
@marcioaquilles
Copy link
Author

Olá pode me ajudar?

@duds-la
Copy link

duds-la commented Jul 15, 2023

public function authenticateUser($email, $password) {
    $user = $this->findByEmail($email);
    if($user) {
        // Checar se as senhas batem
        if(password_verify($password, $user->getPassword())) {
            // Gerar um token e inserir na session
            $token = $user->generateToken();
            $this->setTokenToSession($token, false);

            // Atualizar token no usuário
            $user->setToken($token);
            $this->update($user, false);

            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

Tenta isso, acho que vai resolver seu problema 😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants