diff --git a/app/Helpers/ConfigHelper.php b/app/Helpers/ConfigHelper.php index b6c0ebe..da56781 100644 --- a/app/Helpers/ConfigHelper.php +++ b/app/Helpers/ConfigHelper.php @@ -99,6 +99,7 @@ class ConfigHelper 'albums_menu_parents_only' => false, 'albums_menu_number_items' => 10, 'allow_photo_comments' => false, + 'allow_photo_comments_anonymous' => true, 'allow_self_registration' => true, 'analytics_code' => '', 'app_name' => trans('global.app_name'), diff --git a/app/Http/Controllers/Admin/DefaultController.php b/app/Http/Controllers/Admin/DefaultController.php index f4f5aea..8019d6e 100644 --- a/app/Http/Controllers/Admin/DefaultController.php +++ b/app/Http/Controllers/Admin/DefaultController.php @@ -232,6 +232,7 @@ class DefaultController extends Controller $checkboxKeys = [ 'albums_menu_parents_only', 'allow_photo_comments', + 'allow_photo_comments_anonymous', 'allow_self_registration', 'enable_visitor_hits', 'hotlink_protection', diff --git a/app/Http/Controllers/Gallery/PhotoCommentController.php b/app/Http/Controllers/Gallery/PhotoCommentController.php index f81c890..e02ee50 100644 --- a/app/Http/Controllers/Gallery/PhotoCommentController.php +++ b/app/Http/Controllers/Gallery/PhotoCommentController.php @@ -9,6 +9,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\StorePhotoCommentRequest; use App\Photo; use App\PhotoComment; +use App\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Auth; @@ -29,7 +30,7 @@ class PhotoCommentController extends Controller if (!$this->loadAlbumPhotoComment($albumUrlAlias, $photoFilename, $commentID, $album, $photo, $comment)) { - return; + return null; } if (Gate::denies('moderate-comments', $photo)) @@ -73,7 +74,13 @@ class PhotoCommentController extends Controller if (!$this->loadAlbumPhotoComment($albumUrlAlias, $photoFilename, $commentID, $album, $photo, $comment)) { - return; + return null; + } + + if (!User::currentOrAnonymous()->can('photo:post-comment')) + { + App::abort(403); + return null; } return Theme::render('partials.photo_comments_reply_form', [ @@ -94,7 +101,13 @@ class PhotoCommentController extends Controller if (!$this->loadAlbumPhotoComment($albumUrlAlias, $photoFilename, 0, $album, $photo, $comment)) { - return; + return null; + } + + if (!User::currentOrAnonymous()->can('photo:post-comment')) + { + App::abort(403); + return null; } // Validate and link the parent comment, if provided diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index d37e63a..6cc85d7 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -94,6 +94,16 @@ class AuthServiceProvider extends ServiceProvider { return UserConfig::get('public_statistics') || !$user->isAnonymous(); }); + + Gate::define('photo:post-comment', function(User $user) + { + if ($user->isAnonymous()) + { + return UserConfig::get('allow_photo_comments_anonymous'); + }; + + return true; + }); } private function userHasAdminPermission(User $user, $permissionDescription) diff --git a/resources/lang/en/forms.php b/resources/lang/en/forms.php index 9961921..0e0e7b8 100644 --- a/resources/lang/en/forms.php +++ b/resources/lang/en/forms.php @@ -52,6 +52,8 @@ return [ 'select' => 'Select', 'select_current_text' => '(current)', 'settings_allow_photo_comments' => 'Allow comments on photos', + 'settings_allow_photo_comments_anonymous' => 'Allow anonymous users to comment on photos', + 'settings_allow_photo_comments_anonymous_help' => 'With this option enabled, users can post comments without being logged in.', 'settings_allow_photo_comments_help' => 'With this option enabled, users can comment on individual photos.', 'settings_photo_comments_thread_depth' => 'Maximum depth for nested comments:', 'settings_photo_comments_thread_depth_help' => 'Set to zero to disable nested comments.', diff --git a/resources/views/themes/base/admin/settings.blade.php b/resources/views/themes/base/admin/settings.blade.php index 0628075..2ba7565 100644 --- a/resources/views/themes/base/admin/settings.blade.php +++ b/resources/views/themes/base/admin/settings.blade.php @@ -488,6 +488,14 @@ +
+ + +
+