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\ApiSerializer(UserSerializer::class)) ->attributes(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), (new Extend\SearchDriver(DatabaseSearchDriver::class)) ->addFilter(UserSearcher::class, SuspendedFilter::class), (new Extend\View()) ->namespace('flarum-suspend', __DIR__.'/views'), ];