From e51768622f30e21da33a060f78ff8bf37d4e3d04 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Thu, 27 Nov 2025 09:27:40 +0800 Subject: [PATCH] Fix public access to private book view --- .gitignore | 6 ++++++ README.md | 12 ++++-------- controllers/BookController.php | 5 ++++- models/Book.php | 5 +++++ 4 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62fd8bf --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.log +.env +config/config.php +*.lock +uploads/* +vendor/composer \ No newline at end of file diff --git a/README.md b/README.md index d9fb3ee..636441b 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ## πŸš€ ВозмоТности - **Книги ΠΈ сСрии:** создавайтС сСрии ΠΈ добавляйтС ΠΊΠ½ΠΈΠ³ΠΈ с Π³Π»Π°Π²Π°ΠΌΠΈ. -- **Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠ½ΠΈΠ³:** Markdown, автосохранСниС тСкста, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ содСрТаниС. +- **Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠ½ΠΈΠ³:** WYSIWYG Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Quill.js, автосохранСниС тСкста, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ содСрТаниС. - **ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΊΠ½ΠΈΠ³:** - **Автор:** Π²ΠΈΠ΄ΠΈΡ‚ всС Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΈ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π³Π»Π°Π²Ρ‹. - **ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ доступ:** Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π³Π»Π°Π²Ρ‹ ΠΏΠΎ ссылкС с `shared_token`. @@ -29,7 +29,7 @@ - **PHP Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ:** `mbstring`, `json`, `PDO` - Π’Π΅Π±-сСрвСр с ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π½Π° запись Π² ΠΏΠ°ΠΏΠΊΠΈ `config/` ΠΈ `uploads/` -> ВсС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² `vendor/`. Composer Π½Π΅ Π½ΡƒΠΆΠ΅Π½. +> Composer Π½Π΅ Π½ΡƒΠΆΠ΅Π½. ВсС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² `vendor/`. --- @@ -61,10 +61,7 @@ Π€Π°ΠΉΠ» `config/config.php` содСрТит: - ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…: `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME` -- ΠŸΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ: - - `UPLOAD_PATH` β€” корнСвая ΠΏΠ°ΠΏΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ - - `COVERS_PATH` / `COVERS_URL` β€” ΠΎΠ±Π»ΠΎΠΆΠΊΠΈ ΠΊΠ½ΠΈΠ³ - - `AVATARS_PATH` / `AVATARS_URL` β€” Π°Π²Π°Ρ‚Π°Ρ€Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ +- ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ для систСмных ΠΏΡƒΡ‚Π΅ΠΉ - АдрСс сайта: `SITE_URL` - Имя прилоТСния: `APP_NAME` = "Web Writer" @@ -72,8 +69,7 @@ ## πŸ›  Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ -- ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΡŽ вынСсти Ρ€Π°Π±ΠΎΡ‚Ρƒ с сущностями (ΠΊΠ½ΠΈΠ³ΠΈ, Π³Π»Π°Π²Ρ‹, сСрии, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ) Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹. -- Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° для прилоТСния. +- Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, добавится ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ½ΠΈΠ³ ΠΈ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³. Но это Π½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ :) --- diff --git a/controllers/BookController.php b/controllers/BookController.php index e617a7b..9708f1e 100755 --- a/controllers/BookController.php +++ b/controllers/BookController.php @@ -268,9 +268,12 @@ class BookController extends BaseController { } public function viewAll($id) { + $this->requireLogin(); + $user_id = $_SESSION['user_id']; + $bookModel = new Book($this->pdo); $chapterModel = new Chapter($this->pdo); - $book = $bookModel->findById($id); + $book = $bookModel->findByUserBook($id, $user_id); if (!$book) { http_response_code(404); $this->render('errors/404'); diff --git a/models/Book.php b/models/Book.php index b283529..031b894 100755 --- a/models/Book.php +++ b/models/Book.php @@ -12,6 +12,11 @@ class Book { $stmt->execute([$id]); return $stmt->fetch(PDO::FETCH_ASSOC); } + public function findByUserBook($id, $user_id) { + $stmt = $this->pdo->prepare("SELECT * FROM books WHERE id = ? AND user_id=?"); + $stmt->execute([$id, $user_id]); + return $stmt->fetch(PDO::FETCH_ASSOC); + } public function findByShareToken($share_token) { $stmt = $this->pdo->prepare("SELECT * FROM books WHERE share_token = ?");