diff --git a/framework/core/js/src/admin/components/PermissionGrid.js b/framework/core/js/src/admin/components/PermissionGrid.js index fa6b91526..965cbe6d5 100644 --- a/framework/core/js/src/admin/components/PermissionGrid.js +++ b/framework/core/js/src/admin/components/PermissionGrid.js @@ -210,6 +210,12 @@ export default class PermissionGrid extends Component { permission: 'discussion.delete' }, 80); + items.add('postWithoutThrottle', { + icon: 'fas fa-swimmer', + label: app.translator.trans('core.admin.permissions.post_without_throttle_label'), + permission: 'postWithoutThrottle' + }, 70); + items.add('editPosts', { icon: 'fas fa-pencil-alt', label: app.translator.trans('core.admin.permissions.edit_posts_label'), @@ -233,7 +239,7 @@ export default class PermissionGrid extends Component { label: app.translator.trans('core.admin.permissions.edit_users_label'), permission: 'user.edit' }, 60); - + return items; } diff --git a/framework/core/src/Post/Floodgate.php b/framework/core/src/Post/Floodgate.php index 7a229e07c..d9e3e9f41 100644 --- a/framework/core/src/Post/Floodgate.php +++ b/framework/core/src/Post/Floodgate.php @@ -33,6 +33,10 @@ class Floodgate */ public function assertNotFlooding(User $actor) { + if ($actor->can('postWithoutThrottle')) { + return; + } + if ($this->isFlooding($actor)) { throw new FloodingException; }