diff --git a/app/Http/Controllers/api/ArtController.php b/app/Http/Controllers/api/ArtController.php index c025ce1..8bf7a88 100644 --- a/app/Http/Controllers/api/ArtController.php +++ b/app/Http/Controllers/api/ArtController.php @@ -26,6 +26,13 @@ class ArtController extends Controller public function index(GetApiRequest $request) { + $book = Book::find($request->book_id); + $law = Law::find($book?->law_id); + + if ($this->isLockedForCurrentUser($law)) { + return $this->failed([], ['title' => 'Subscription Required', 'message' => 'This content requires an active subscription.'], 403); + } + $arts = Art::with(['chapter', 'part', 'volum', 'law', 'book', 'section', 'gate'])->where('book_id', $request->book_id)->orderBy('number')->get(); $arts = $arts->map(function ($art) { @@ -84,6 +91,10 @@ class ArtController extends Controller $law = Law::find($art?->law_id); + if ($this->isLockedForCurrentUser($law)) { + return $this->failed([], ['title' => 'Subscription Required', 'message' => 'This content requires an active subscription.'], 403); + } + $art->is_like = $this->isLiked($art->id); $art->note = Note::select('id', 'note', 'color_code','created_at')->where('user_id', auth()->user()->id)->where('art_id', $id)->get(); $art->category = $law?->category?->name; @@ -152,16 +163,23 @@ class ArtController extends Controller ->exists(); } + private function isLockedForCurrentUser(?Law $law): bool + { + return !auth()->user()->isSubscriber() && (bool) $law?->is_locked; + } + public function likes() { $likes = LikeArt::query()->where('user_id', auth()->user()->id) - ->with('art') + ->with('art.law') ->get() ->map(function ($q) { + $isLocked = $this->isLockedForCurrentUser($q->art?->law); + return [ 'id' => $q->art->id, 'title' => $q->art->title, - 'text' => $q->art->text + 'text' => $isLocked ? null : $q->art->text ]; }); @@ -257,12 +275,13 @@ class ArtController extends Controller } $law = Law::find($item->law_id); + $isLocked = $this->isLockedForCurrentUser($law); return [ 'id' => $item->id, 'title' => $item->title, - 'text' => $context, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : optional($law)->is_locked, + 'text' => $isLocked ? null : $context, + 'is_locked' => $isLocked, 'type' => 'art', 'route' => array_values($this->route($modelClass, $item)), 'category' => optional($law->category)->name, @@ -466,11 +485,13 @@ class ArtController extends Controller $context = $text; } + $isLocked = $this->isLockedForCurrentUser($law); + return [ 'id' => $q->id, 'title' => $q->title, - 'text' => $context, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : $law->is_locked, + 'text' => $isLocked ? null : $context, + 'is_locked' => $isLocked, 'type' => 'art', 'route' => $route, 'category' => $law?->category?->name, diff --git a/app/Http/Controllers/api/BookController.php b/app/Http/Controllers/api/BookController.php index 70d44ce..cba6bca 100644 --- a/app/Http/Controllers/api/BookController.php +++ b/app/Http/Controllers/api/BookController.php @@ -23,7 +23,7 @@ class BookController extends Controller $books = Book::where('volum_id', $validated['volum_id'])->paginate($perPage, ['*'], 'page', $page); $books->getCollection()->transform(function ($section) { - $section['is_locked'] = auth()->user()->isSubscriber() !== true ? true : Law::where('is_locked',$section['law_id'])->first()?->is_locked ?? false; + $section['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('id', $section['law_id'])->first()?->is_locked ?? false; unset($section['law_id']); unset($section['volum_id']); diff --git a/app/Http/Controllers/api/ChapterController.php b/app/Http/Controllers/api/ChapterController.php index b60d5aa..cb2809a 100644 --- a/app/Http/Controllers/api/ChapterController.php +++ b/app/Http/Controllers/api/ChapterController.php @@ -24,7 +24,7 @@ class ChapterController extends Controller $chapters->getCollection()->transform(function ($section) { - $section['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $section['law_id'])->first()?->is_locked; + $section['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('id', $section['law_id'])->first()?->is_locked; unset($section['law_id']); unset($section['section_id']); diff --git a/app/Http/Controllers/api/FolderController.php b/app/Http/Controllers/api/FolderController.php index ac6381d..b62f825 100644 --- a/app/Http/Controllers/api/FolderController.php +++ b/app/Http/Controllers/api/FolderController.php @@ -83,13 +83,14 @@ class FolderController extends Controller } else { $shortText = $text; } - + $isLocked = !auth()->user()->isSubscriber() && (bool) $art->law?->is_locked; + return [ 'id' => $art->id, 'title' => $art->title, - 'text' => $shortText, + 'text' => $isLocked ? null : $shortText, 'number' => $art->number, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $art->law->id)->first()?->is_locked, + 'is_locked' => $isLocked, 'chapter' => $art->chapter != null ? [ 'id' => $art->chapter->id, 'title' => $art->chapter->title, diff --git a/app/Http/Controllers/api/GateController.php b/app/Http/Controllers/api/GateController.php index a10e029..a596182 100644 --- a/app/Http/Controllers/api/GateController.php +++ b/app/Http/Controllers/api/GateController.php @@ -23,7 +23,7 @@ class GateController extends Controller $gates->getCollection()->transform(function ($gate) { unset($gate['book_id']); - $gate['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $gate['law_id'])->first()?->is_locked; + $gate['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('id', $gate['law_id'])->first()?->is_locked; unset($gate['law_id']); diff --git a/app/Http/Controllers/api/PartController.php b/app/Http/Controllers/api/PartController.php index 33b33b6..1fb042b 100644 --- a/app/Http/Controllers/api/PartController.php +++ b/app/Http/Controllers/api/PartController.php @@ -25,11 +25,11 @@ class PartController extends Controller $parts->getCollection()->transform(function ($part) { unset($part['book_id']); - $gate['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $part['law_id'])->first()?->is_locked; + $part['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('id', $part['law_id'])->first()?->is_locked; - unset($gate['law_id']); + unset($part['law_id']); - return $gate; + return $part; }); diff --git a/app/Http/Controllers/api/SectionController.php b/app/Http/Controllers/api/SectionController.php index f306d6c..6dcf41c 100644 --- a/app/Http/Controllers/api/SectionController.php +++ b/app/Http/Controllers/api/SectionController.php @@ -25,7 +25,7 @@ class SectionController extends Controller $section->getCollection()->transform(function ($section) { unset($section['book_id']); - $section['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked',$section['law_id'])->first()?->is_locked; + $section['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('id', $section['law_id'])->first()?->is_locked; unset($section['law_id']); diff --git a/app/Http/Controllers/api/VolumController.php b/app/Http/Controllers/api/VolumController.php index 984b13e..929dcde 100644 --- a/app/Http/Controllers/api/VolumController.php +++ b/app/Http/Controllers/api/VolumController.php @@ -35,7 +35,7 @@ class VolumController extends Controller $volumes->getCollection()->transform(function ($volume) { $volume['has_book'] = Book::where('volum_id', $volume->id)->exists(); - $volume['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $volume['law_id'])->first()?->is_locked; + $volume['is_locked'] = auth()->user()->isSubscriber() !== false ? false : Law::where('id', $volume['law_id'])->first()?->is_locked; unset($volume['law_id']); @@ -79,7 +79,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } $paginationData = [ @@ -117,7 +117,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -151,7 +151,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -184,7 +184,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -218,7 +218,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -252,7 +252,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -286,7 +286,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -321,7 +321,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -355,7 +355,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => $relation, - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked ]; } break; @@ -399,7 +399,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => 'volume', - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $law->id)->first()?->is_locked ]; } return $this->success($data, 'Success'); @@ -423,7 +423,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => 'art', - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $law->id)->first()?->is_locked ]; } return $this->success($data, 'Success'); @@ -570,7 +570,7 @@ class VolumController extends Controller 'title' => $item->title, 'number' => $item->number, 'type' => 'laws', - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked, + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->id)->first()?->is_locked, 'image' => $item?->image, 'law' => $item?->title, 'count_art' => $item->arts->count(), @@ -724,7 +724,7 @@ class VolumController extends Controller 'number' => $item->number, 'type' => $type, 'route' => $this->route($item, $item), - 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('is_locked', $item->law_id)->first()?->is_locked, + 'is_locked' => auth()->user()->isSubscriber() !== false ? false : Law::where('id', $item->law_id)->first()?->is_locked, 'law' => $law?->title, 'image' => $law?->image, 'count_art' => $law?->arts?->count() ?? 0,