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)) ->cast('suspended_until', 'datetime') ->cast('suspend_reason', 'string') ->cast('suspend_message', 'string'), (new Extend\ApiResource(Resource\UserResource::class)) ->fields(UserResourceFields::class), (new Extend\ApiResource(Resource\ForumResource::class)) ->fields(fn () => [ Schema\Boolean::make('canSuspendUsers') ->get(fn (object $model, Context $context) => $context->getActor()->hasPermission('user.suspend')), ]), new Extend\Locales(__DIR__.'/locale'), (new Extend\Notification()) ->type(UserSuspendedBlueprint::class, ['alert', 'email']) ->type(UserUnsuspendedBlueprint::class, ['alert', 'email']), (new Extend\Event()) ->listen(Saving::class, Listener\SavingUser::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), (new Extend\SearchDriver(DatabaseSearchDriver::class)) ->addFilter(UserSearcher::class, SuspendedFilter::class), (new Extend\View()) ->namespace('flarum-suspend', __DIR__.'/views'), ];