瀏覽代碼

Add more rate limits

Daniel Supernault 6 年之前
父節點
當前提交
1f1df2d1c4
共有 2 個文件被更改,包括 28 次插入3 次删除
  1. 25 0
      app/Util/RateLimit/User.php
  2. 3 3
      routes/web.php

+ 25 - 0
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;
+	}
 }

+ 3 - 3
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');