Fix public access to private book view
This commit is contained in:
parent
d850f54666
commit
e51768622f
|
|
@ -0,0 +1,6 @@
|
||||||
|
*.log
|
||||||
|
.env
|
||||||
|
config/config.php
|
||||||
|
*.lock
|
||||||
|
uploads/*
|
||||||
|
vendor/composer
|
||||||
12
README.md
12
README.md
|
|
@ -9,7 +9,7 @@
|
||||||
## 🚀 Возможности
|
## 🚀 Возможности
|
||||||
|
|
||||||
- **Книги и серии:** создавайте серии и добавляйте книги с главами.
|
- **Книги и серии:** создавайте серии и добавляйте книги с главами.
|
||||||
- **Редактор книг:** Markdown, автосохранение текста, интерактивное содержание.
|
- **Редактор книг:** WYSIWYG редактор Quill.js, автосохранение текста, интерактивное содержание.
|
||||||
- **Предпросмотр книг:**
|
- **Предпросмотр книг:**
|
||||||
- **Автор:** видит все черновики и опубликованные главы.
|
- **Автор:** видит все черновики и опубликованные главы.
|
||||||
- **Публичный доступ:** только опубликованные главы по ссылке с `shared_token`.
|
- **Публичный доступ:** только опубликованные главы по ссылке с `shared_token`.
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
- **PHP расширения:** `mbstring`, `json`, `PDO`
|
- **PHP расширения:** `mbstring`, `json`, `PDO`
|
||||||
- Веб-сервер с правами на запись в папки `config/` и `uploads/`
|
- Веб-сервер с правами на запись в папки `config/` и `uploads/`
|
||||||
|
|
||||||
> Все библиотеки уже включены в `vendor/`. Composer не нужен.
|
> Composer не нужен. Все библиотеки уже включены в `vendor/`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -61,10 +61,7 @@
|
||||||
Файл `config/config.php` содержит:
|
Файл `config/config.php` содержит:
|
||||||
|
|
||||||
- Подключение к базе данных: `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`
|
- Подключение к базе данных: `DB_HOST`, `DB_USER`, `DB_PASS`, `DB_NAME`
|
||||||
- Пути к файлам:
|
- Константы для системных путей
|
||||||
- `UPLOAD_PATH` — корневая папка загрузок
|
|
||||||
- `COVERS_PATH` / `COVERS_URL` — обложки книг
|
|
||||||
- `AVATARS_PATH` / `AVATARS_URL` — аватары пользователей
|
|
||||||
- Адрес сайта: `SITE_URL`
|
- Адрес сайта: `SITE_URL`
|
||||||
- Имя приложения: `APP_NAME` = "Web Writer"
|
- Имя приложения: `APP_NAME` = "Web Writer"
|
||||||
|
|
||||||
|
|
@ -72,8 +69,7 @@
|
||||||
|
|
||||||
## 🛠 Дальнейшее развитие
|
## 🛠 Дальнейшее развитие
|
||||||
|
|
||||||
- Планирую вынести работу с сущностями (книги, главы, серии, пользователи) в контроллеры.
|
- Возможно, добавится поддержка комментариев для публичных книг и рейтинг. Но это не точно :)
|
||||||
- Создать единую точку входа для приложения.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -268,9 +268,12 @@ class BookController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function viewAll($id) {
|
public function viewAll($id) {
|
||||||
|
$this->requireLogin();
|
||||||
|
$user_id = $_SESSION['user_id'];
|
||||||
|
|
||||||
$bookModel = new Book($this->pdo);
|
$bookModel = new Book($this->pdo);
|
||||||
$chapterModel = new Chapter($this->pdo);
|
$chapterModel = new Chapter($this->pdo);
|
||||||
$book = $bookModel->findById($id);
|
$book = $bookModel->findByUserBook($id, $user_id);
|
||||||
if (!$book) {
|
if (!$book) {
|
||||||
http_response_code(404);
|
http_response_code(404);
|
||||||
$this->render('errors/404');
|
$this->render('errors/404');
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,11 @@ class Book {
|
||||||
$stmt->execute([$id]);
|
$stmt->execute([$id]);
|
||||||
return $stmt->fetch(PDO::FETCH_ASSOC);
|
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) {
|
public function findByShareToken($share_token) {
|
||||||
$stmt = $this->pdo->prepare("SELECT * FROM books WHERE share_token = ?");
|
$stmt = $this->pdo->prepare("SELECT * FROM books WHERE share_token = ?");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue