/** * Processa o formulário de login */ protected static function processLoginForm() { // proteção contra CSRF \CSRF::Check(); $email = isset($_POST['email']) ? $_POST['email'] : null; $password = isset($_POST['password']) ? $_POST['password'] : null; $hashedPassword = \Hash::password($password); $errors = []; if (empty($email)) { $errors[] = 'Informe seu email'; } if (empty($password)) { $errors[] = 'Informe sua senha'; } if (count($errors) > 0) { return \View::make('login', compact('errors')); } $DB = new \DB(); $sql = "SELECT id, password, status FROM users WHERE email = :email"; $stmt = $DB->prepare($sql); $stmt->bindParam(':email', $email); $stmt->execute(); $rows = $stmt->fetchAll(\PDO::FETCH_OBJ); if (count($rows) <= 0) { $errors[] = 'Usuário não encontrado'; } else { $user = $rows[0]; if ($hashedPassword != $user->password) { $errors[] = 'Senha incorreta'; } elseif ($user->status != \Models\User::STATUS_ACTIVE) { $errors[] = 'Ative sua conta antes de fazer login'; } else { // busca os dados do usuário para criar os dados no cookie $objUser = new \Models\User(); $objUser->find($user->id); // gera um token de acesso $token = $objUser->generateToken(); // salva o cookie com os dados do usuário self::saveSessionCookieForUser($objUser); // redireciona para a página inicial redirect(getBaseURL()); } } if (count($errors) > 0) { return \View::make('login', compact('errors')); } }