-
Notifications
You must be signed in to change notification settings - Fork 142
Open
Description
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); } }
Metadata
Metadata
Assignees
Labels
No labels