diff --git a/app/Policies/PostPolicy.php b/app/Policies/PostPolicy.php new file mode 100644 index 000000000..e626e1843 --- /dev/null +++ b/app/Policies/PostPolicy.php @@ -0,0 +1,26 @@ +hasRole('Admin') || ($user->getKey() === $post->author_id); + } + + public function delete($user, Post $post): bool + { + // Admins can delete any post; users can delete their own + return $user->hasRole('Admin') || ($user->getKey() === $post->author_id); + } + + public function restore($user, Post $post): bool + { + // Admins can restore any post; users can restore their own + return $user->hasRole('Admin') || ($user->getKey() === $post->author_id); + } +} diff --git a/app/Policies/ThreadPolicy.php b/app/Policies/ThreadPolicy.php new file mode 100644 index 000000000..61006208b --- /dev/null +++ b/app/Policies/ThreadPolicy.php @@ -0,0 +1,50 @@ +hasRole('Admin') || ($user->getKey() === $thread->author_id); + } + + public function reply($user, Thread $thread): bool + { + // Admins can reply even if locked; otherwise respect lock state + return $user->hasRole('Admin') || (! $thread->locked); + } + + public function delete($user, Thread $thread): bool + { + // Admins can delete any thread; users can delete their own + return $user->hasRole('Admin') || ($user->getKey() === $thread->author_id); + } + + public function restore($user, Thread $thread): bool + { + // Admins can restore any thread; users can restore their own + return $user->hasRole('Admin') || ($user->getKey() === $thread->author_id); + } + + public function deletePosts($user, Thread $thread): bool + { + // Admins can delete posts in any thread; otherwise fall back to default (true) + return $user->hasRole('Admin') || parent::deletePosts($user, $thread); + } + + public function restorePosts($user, Thread $thread): bool + { + // Admins can restore posts in any thread; otherwise fall back to default (true) + return $user->hasRole('Admin') || parent::restorePosts($user, $thread); + } +} diff --git a/public/build/manifest.json b/public/build/manifest.json index 0702c82ec..dcbc5482b 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -1,25 +1,25 @@ { "resources/css/app.css": { - "file": "assets/app-CHtG3_Bv.css", + "file": "assets/app-Ra66rJ-a.css", "src": "resources/css/app.css", "isEntry": true }, "resources/forum/livewire-tailwind/css/forum.css": { - "file": "assets/forum-Dv9pV7PL.css", + "file": "assets/forum-sBUJUSpH.css", "src": "resources/forum/livewire-tailwind/css/forum.css", "isEntry": true }, "resources/forum/livewire-tailwind/js/forum.js": { - "file": "assets/forum-DckUD3iN.js", + "file": "assets/forum-DYii3E-X.js", "name": "forum", "src": "resources/forum/livewire-tailwind/js/forum.js", "isEntry": true, "css": [ - "assets/forum-qY4RLc9f.css" + "assets/forum-B-iLUX4_.css" ] }, "resources/js/app.js": { - "file": "assets/app-Xaw6OIO1.js", + "file": "assets/app-CEsE5a7F.js", "name": "app", "src": "resources/js/app.js", "isEntry": true