mirror of
https://github.com/flarum/core.git
synced 2025-10-18 10:16:09 +02:00
Move floodgate to middleware, add extender + integration tests (#2170)
This commit is contained in:
committed by
GitHub
parent
387b4fd315
commit
1a5e4d454e
@@ -15,6 +15,9 @@ use Flarum\Post\Exception\FloodingException;
|
||||
use Flarum\User\User;
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
|
||||
/**
|
||||
* @deprecated beta 14, removed beta 15 in favor of Floodgate middleware
|
||||
*/
|
||||
class Floodgate
|
||||
{
|
||||
/**
|
||||
|
@@ -9,11 +9,38 @@
|
||||
|
||||
namespace Flarum\Post;
|
||||
|
||||
use DateTime;
|
||||
use Flarum\Event\ConfigurePostTypes;
|
||||
use Flarum\Foundation\AbstractServiceProvider;
|
||||
|
||||
class PostServiceProvider extends AbstractServiceProvider
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->extend('flarum.api.throttlers', function ($throttlers) {
|
||||
$throttlers['postTimeout'] = function ($request) {
|
||||
if (! in_array($request->getAttribute('routeName'), ['discussions.create', 'posts.create'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$actor = $request->getAttribute('actor');
|
||||
|
||||
if ($actor->can('postWithoutThrottle')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Post::where('user_id', $actor->id)->where('created_at', '>=', new DateTime('-10 seconds'))->exists()) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
return $throttlers;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
Reference in New Issue
Block a user