diff --git a/extensions/suspend/extend.php b/extensions/suspend/extend.php index eba4ede5c..027417fbf 100644 --- a/extensions/suspend/extend.php +++ b/extensions/suspend/extend.php @@ -8,9 +8,11 @@ */ use Flarum\Api\Serializer\BasicUserSerializer; +use Flarum\Api\Serializer\UserSerializer; use Flarum\Event\ConfigureUserGambits; use Flarum\Extend; use Flarum\Suspend\Access; +use Flarum\Suspend\AddUserSuspendAttributes; use Flarum\Suspend\Event\Suspended; use Flarum\Suspend\Event\Unsuspended; use Flarum\Suspend\Listener; @@ -33,6 +35,9 @@ return [ (new Extend\Model(User::class)) ->dateAttribute('suspended_until'), + (new Extend\ApiSerializer(UserSerializer::class)) + ->mutate(AddUserSuspendAttributes::class), + new Extend\Locales(__DIR__.'/locale'), (new Extend\Notification()) @@ -40,7 +45,6 @@ return [ ->type(UserUnsuspendedBlueprint::class, BasicUserSerializer::class, ['alert', 'email']), function (Dispatcher $events) { - $events->subscribe(Listener\AddUserSuspendAttributes::class); $events->subscribe(Listener\RevokeAccessFromSuspendedUsers::class); $events->listen(Saving::class, Listener\SaveSuspensionToDatabase::class); diff --git a/extensions/suspend/src/AddUserSuspendAttributes.php b/extensions/suspend/src/AddUserSuspendAttributes.php new file mode 100755 index 000000000..9e694c1eb --- /dev/null +++ b/extensions/suspend/src/AddUserSuspendAttributes.php @@ -0,0 +1,30 @@ +getActor()->can('suspend', $user); + + if ($canSuspend) { + $attributes['suspendedUntil'] = $serializer->formatDate($user->suspended_until); + } + + $attributes['canSuspend'] = $canSuspend; + + return $attributes; + } +} diff --git a/extensions/suspend/src/Listener/AddUserSuspendAttributes.php b/extensions/suspend/src/Listener/AddUserSuspendAttributes.php deleted file mode 100755 index ada1fd4d2..000000000 --- a/extensions/suspend/src/Listener/AddUserSuspendAttributes.php +++ /dev/null @@ -1,41 +0,0 @@ -listen(Serializing::class, [$this, 'addAttributes']); - } - - /** - * @param Serializing $event - */ - public function addAttributes(Serializing $event) - { - if ($event->isSerializer(UserSerializer::class)) { - $canSuspend = $event->actor->can('suspend', $event->model); - - if ($canSuspend) { - $event->attributes['suspendedUntil'] = $event->formatDate($event->model->suspended_until); - } - - $event->attributes['canSuspend'] = $canSuspend; - } - } -}