js(__DIR__.'/js/dist/forum.js') ->css(__DIR__.'/less/forum.less'), (new Extend\Frontend('admin')) ->js(__DIR__.'/js/dist/admin.js') ->css(__DIR__.'/less/admin.less'), (new Extend\Model(User::class)) ->dateAttribute('suspended_until'), (new Extend\ApiSerializer(UserSerializer::class)) ->mutate(AddUserSuspendAttributes::class), new Extend\Locales(__DIR__.'/locale'), (new Extend\Notification()) ->type(UserSuspendedBlueprint::class, BasicUserSerializer::class, ['alert', 'email']) ->type(UserUnsuspendedBlueprint::class, BasicUserSerializer::class, ['alert', 'email']), (new Extend\Event()) ->listen(Saving::class, Listener\SaveSuspensionToDatabase::class) ->listen(Suspended::class, Listener\SendNotificationWhenUserIsSuspended::class) ->listen(Unsuspended::class, Listener\SendNotificationWhenUserIsUnsuspended::class), (new Extend\Policy()) ->modelPolicy(User::class, UserPolicy::class), (new Extend\User()) ->permissionGroups(RevokeAccessFromSuspendedUsers::class), function (Dispatcher $events) { $events->listen(ConfigureUserGambits::class, function (ConfigureUserGambits $event) { $event->gambits->add(SuspendedGambit::class); }); } ];