diff --git a/app/Util/RateLimit/User.php b/app/Util/RateLimit/User.php index d7d51da8f..75e4b1c6e 100644 --- a/app/Util/RateLimit/User.php +++ b/app/Util/RateLimit/User.php @@ -4,6 +4,11 @@ namespace App\Util\RateLimit; trait User { + public function isTrustedAccount() + { + return $this->created_at->lt(now()->subDays(20)); + } + public function getMaxPostsPerHourAttribute() { return 20; @@ -23,4 +28,24 @@ trait User { { return 500; } + + public function getMaxLikesPerHourAttribute() + { + return 120; + } + + public function getMaxLikesPerDayAttribute() + { + return 1000; + } + + public function getMaxSharesPerHourAttribute() + { + return 60; + } + + public function getMaxSharesPerDayAttribute() + { + return 500; + } } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index fb2c9a56b..d42e34ada 100644 --- a/routes/web.php +++ b/routes/web.php @@ -105,7 +105,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact }); Route::group(['prefix' => 'local'], function () { Route::get('i/follow-suggestions', 'ApiController@followSuggestions'); - Route::post('status/compose', 'InternalApiController@compose'); + Route::post('status/compose', 'InternalApiController@compose')->middleware('throttle:maxPostsPerHour,60')->middleware('throttle:maxPostsPerDay,1440'); Route::get('exp/rec', 'ApiController@userRecommendations'); }); }); @@ -121,8 +121,8 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::post('unmute', 'AccountController@unmute'); Route::post('block', 'AccountController@block'); Route::post('unblock', 'AccountController@unblock'); - Route::post('like', 'LikeController@store'); - Route::post('share', 'StatusController@storeShare'); + Route::post('like', 'LikeController@store')->middleware('throttle:maxLikesPerHour,60')->middleware('throttle:maxLikesPerDay,1440'); + Route::post('share', 'StatusController@storeShare')->middleware('throttle:maxSharesPerHour,60')->middleware('throttle:maxSharesPerDay,1440'); Route::post('follow', 'FollowerController@store'); Route::post('bookmark', 'BookmarkController@store'); Route::get('lang/{locale}', 'SiteController@changeLocale');