{"id":13396129,"url":"https://github.com/cybercog/laravel-ban","last_synced_at":"2025-10-05T05:17:55.670Z","repository":{"id":44600696,"uuid":"83971055","full_name":"cybercog/laravel-ban","owner":"cybercog","description":"Laravel Ban simplify blocking and banning Eloquent models.","archived":false,"fork":false,"pushed_at":"2025-02-22T12:22:47.000Z","size":166,"stargazers_count":1091,"open_issues_count":16,"forks_count":66,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-20T22:18:50.040Z","etag":null,"topics":["access","arrest","ban","block","cog","eloquent","forbid","jail","justice","laravel","package","php","prison","restrict","sanction","security","trait","user"],"latest_commit_sha":null,"homepage":"https://komarev.com/sources/laravel-ban","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cybercog.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-05T13:14:48.000Z","updated_at":"2025-05-09T00:03:25.000Z","dependencies_parsed_at":"2024-12-12T13:00:30.439Z","dependency_job_id":"62392e59-fddc-4bdd-b3da-560f16d404a3","html_url":"https://github.com/cybercog/laravel-ban","commit_stats":{"total_commits":119,"total_committers":18,"mean_commits":6.611111111111111,"dds":0.4369747899159664,"last_synced_commit":"f5ad6a6365096e8c7e626e3a90b866708d448e97"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/cybercog/laravel-ban","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybercog%2Flaravel-ban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybercog%2Flaravel-ban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybercog%2Flaravel-ban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybercog%2Flaravel-ban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cybercog","download_url":"https://codeload.github.com/cybercog/laravel-ban/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cybercog%2Flaravel-ban/sbom","scorecard":{"id":313946,"data":{"date":"2025-08-11","repo":{"name":"github.com/cybercog/laravel-ban","commit":"6c02982175de647617fe08596204e17d49cc4384"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 3/30 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 7 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T23:45:45.951Z","repository_id":44600696,"created_at":"2025-08-17T23:45:45.951Z","updated_at":"2025-08-17T23:45:45.951Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278411261,"owners_count":25982368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["access","arrest","ban","block","cog","eloquent","forbid","jail","justice","laravel","package","php","prison","restrict","sanction","security","trait","user"],"created_at":"2024-07-30T18:00:40.946Z","updated_at":"2025-10-05T05:17:55.641Z","avatar_url":"https://github.com/cybercog.png","language":"PHP","funding_links":[],"categories":["Popular Packages"],"sub_categories":[],"readme":"# Laravel Ban\n\n![cog-laravel-ban](https://user-images.githubusercontent.com/1849174/44558308-1d8e0580-a74c-11e8-8e2a-ec297bbc3f12.png)\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://discord.gg/nAZBEkH\"\u003e\u003cimg src=\"https://img.shields.io/static/v1?logo=discord\u0026label=\u0026message=Discord\u0026color=36393f\u0026style=flat-square\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/cybercog/laravel-ban/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/cybercog/laravel-ban.svg?style=flat-square\" alt=\"Releases\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/cybercog/laravel-ban/actions/workflows/tests.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/cybercog/laravel-ban/tests.yml?style=flat-square\" alt=\"Build\"\u003e\u003c/a\u003e\n\u003ca href=\"https://styleci.io/repos/83971055\"\u003e\u003cimg src=\"https://styleci.io/repos/83971055/shield\" alt=\"StyleCI\"\u003e\u003c/a\u003e\n\u003ca href=\"https://scrutinizer-ci.com/g/cybercog/laravel-ban/?branch=master\"\u003e\u003cimg src=\"https://img.shields.io/scrutinizer/g/cybercog/laravel-ban.svg?style=flat-square\" alt=\"Code Quality\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/cybercog/laravel-ban/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/cybercog/laravel-ban.svg?style=flat-square\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Introduction\n\nLaravel Ban simplify management of Eloquent model's ban. Make any model bannable in a minutes!\n\nUse case is not limited to User model, any Eloquent model could be banned: Organizations, Teams, Groups and others.\n\n## Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Prepare bannable model](#prepare-bannable-model)\n  - [Prepare bannable model database table](#prepare-bannable-model-database-table)\n  - [Available methods](#available-methods)\n  - [Scopes](#scopes)\n  - [Events](#events)\n  - [Middleware](#middleware)\n  - [Scheduling](#scheduling)\n- [Integrations](#integrations)\n- [Changelog](#changelog)\n- [Upgrading](#upgrading)\n- [Contributing](#contributing)\n- [Testing](#testing)\n- [Security](#security)\n- [Contributors](#contributors)\n- [Alternatives](#alternatives)\n- [License](#license)\n- [About CyberCog](#about-cybercog)\n\n## Features\n\n- Model can have many bans.\n- Removed bans kept in history as soft deleted records.\n- Most parts of the logic is handled by the `BanService`.\n- Has middleware to prevent banned user route access.\n- Use case is not limited to `User` model, any Eloquent model could be banned.\n- Events firing on models `ban` and `unban`.\n- Designed to work with Laravel Eloquent models.\n- Has [Laravel Nova support](https://github.com/cybercog/laravel-nova-ban).\n- Using contracts to keep high customization capabilities.\n- Using traits to get functionality out of the box.\n- Following PHP Standard Recommendations:\n  - [PSR-1 (Basic Coding Standard)](http://www.php-fig.org/psr/psr-1/).\n  - [PSR-2 (Coding Style Guide)](http://www.php-fig.org/psr/psr-2/).\n  - [PSR-4 (Autoloading Standard)](http://www.php-fig.org/psr/psr-4/).\n- Covered with unit tests.\n\n## Installation\n\nFirst, pull in the package through Composer:\n\n```shell\ncomposer require cybercog/laravel-ban\n```\n\n#### Registering package\n\n\u003e The package will automatically register itself. This step required for Laravel 5.4 or earlier releases only.\n\nInclude the service provider within `app/config/app.php`:\n\n```php\n'providers' =\u003e [\n    Cog\\Laravel\\Ban\\Providers\\BanServiceProvider::class,\n],\n```\n\n#### Apply database migrations\n\nAt last, you need to publish and run database migrations:\n\n```shell\nphp artisan vendor:publish --provider=\"Cog\\Laravel\\Ban\\Providers\\BanServiceProvider\" --tag=\"migrations\"\nphp artisan migrate\n```\n\n## Usage\n\n### Prepare bannable model\n\n```php\nuse Cog\\Contracts\\Ban\\Bannable as BannableInterface;\nuse Cog\\Laravel\\Ban\\Traits\\Bannable;\nuse Illuminate\\Foundation\\Auth\\User as Authenticatable;\n\nclass User extends Authenticatable implements BannableInterface\n{\n    use Bannable;\n}\n```\n\n### Prepare bannable model database table\n\nBannable model must have `nullable timestamp` column named `banned_at`. This value used as flag and simplify checks if user was banned. If you are trying to make default Laravel User model to be bannable you can use example below.\n\n#### Create a new migration file\n\n```shell\nphp artisan make:migration add_banned_at_column_to_users_table\n```\n\nThen insert the following code into migration file:\n\n```php\n\u003c?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nreturn new class extends Migration\n{\n    public function up(): void\n    {\n        Schema::table('users', function (Blueprint $table) {\n            $table-\u003etimestamp('banned_at')-\u003enullable();\n        });\n    }\n\n    public function down(): void\n    {\n        Schema::table('users', function (Blueprint $table) {\n            $table-\u003edropColumn('banned_at');\n        });\n    }\n};\n```\n\n### Available methods\n\n#### Apply ban for the entity\n\n```php\n$user-\u003eban();\n```\n\n#### Apply ban for the entity with reason comment\n\n```php\n$user-\u003eban([\n    'comment' =\u003e 'Enjoy your ban!',\n]);\n```\n\n#### Apply ban for the entity which will be deleted over time\n\n```php\n$user-\u003eban([\n    'expired_at' =\u003e '2086-03-28 00:00:00',\n]);\n``` \n\n`expired_at` attribute could be `\\Carbon\\Carbon` instance or any string which could be parsed by `\\Carbon\\Carbon::parse($string)` method:\n\n```php\n$user-\u003eban([\n    'expired_at' =\u003e '+1 month',\n]);\n``` \n\n#### Remove ban from entity\n\n```php\n$user-\u003eunban();\n```\n\nOn `unban` all related ban models are soft deletes.\n\n#### Check if entity is banned\n\n```php\n$user-\u003eisBanned();\n```\n\n#### Check if entity is not banned\n\n```php\n$user-\u003eisNotBanned();\n```\n\n#### Delete expired bans manually\n\n```php\napp(\\Cog\\Contracts\\Ban\\BanService::class)-\u003edeleteExpiredBans();\n```\n\n#### Determine if ban is permanent\n\n```php\n$ban = $user-\u003eban();\n\n$ban-\u003eisPermanent(); // true\n```\n\nOr pass `null` value.\n\n```php\n$ban = $user-\u003eban([\n   'expired_at' =\u003e null,\n]);\n\n$ban-\u003eisPermanent(); // true\n```\n\n#### Determine if ban is temporary\n\n```php\n$ban = $user-\u003eban([\n   'expired_at' =\u003e '2086-03-28 00:00:00',\n]);\n\n$ban-\u003eisTemporary(); // true\n```\n\n### Scopes\n\n#### Get all models which are not banned\n\n```php\n$users = User::withoutBanned()-\u003eget();\n```\n\n#### Get banned and not banned models\n\n```php\n$users = User::withBanned()-\u003eget();\n```\n\n#### Get only banned models\n\n```php\n$users = User::onlyBanned()-\u003eget();\n```\n\n#### Scope auto-apply\n\nTo apply query scopes all the time you can define `shouldApplyBannedAtScope` method in bannable model. If method returns `true` all banned models will be hidden by default.\n\n```php\nuse Cog\\Contracts\\Ban\\Bannable as BannableInterface;\nuse Cog\\Laravel\\Ban\\Traits\\Bannable;\nuse Illuminate\\Foundation\\Auth\\User as Authenticatable;\n\nclass User extends Authenticatable implements BannableInterface\n{\n    use Bannable;\n    \n    /**\n     * Determine if BannedAtScope should be applied by default.\n     *\n     * @return bool\n     */\n    public function shouldApplyBannedAtScope()\n    {\n        return true;\n    }\n}\n```\n\n### Events\n\nIf entity is banned `\\Cog\\Laravel\\Ban\\Events\\ModelWasBanned` event is fired.\n\nIs entity is unbanned `\\Cog\\Laravel\\Ban\\Events\\ModelWasUnbanned` event is fired.\n\n### Middleware\n\nThis package has route middleware designed to prevent banned users to go to protected routes.\n\nTo use it define new middleware in `$routeMiddleware` array of `app/Http/Kernel.php` file:\n\n```php\nprotected $routeMiddleware = [\n    'forbid-banned-user' =\u003e \\Cog\\Laravel\\Ban\\Http\\Middleware\\ForbidBannedUser::class,\n]\n```\n\nThen use it in any routes and route groups you need to protect:\n\n```php\nRoute::get('/', [\n    'uses' =\u003e 'UsersController@profile',\n    'middleware' =\u003e 'forbid-banned-user',\n]);\n```\n\nIf you want force logout banned user on protected routes access, use `LogsOutBannedUser` middleware instead:\n\n```php\nprotected $routeMiddleware = [\n    'logs-out-banned-user' =\u003e \\Cog\\Laravel\\Ban\\Http\\Middleware\\LogsOutBannedUser::class,\n]\n```\n\n### Scheduling\n\nAfter you have performed the basic installation you can start using the `ban:delete-expired` command. In most cases you'll want to schedule these command so you don't have to manually run it everytime you need to delete expired bans and unban models.\n\nThe command can be scheduled in Laravel's console kernel, just like any other command.\n\n```php\n// app/Console/Kernel.php\n\nprotected function schedule(Schedule $schedule)\n{\n    $schedule-\u003ecommand('ban:delete-expired')-\u003eeveryMinute();\n}\n```\n\nOf course, the time used in the code above is just example. Adjust it to suit your own preferences.\n\n## Integrations\n\n- [Laravel Nova Ban](https://github.com/cybercog/laravel-nova-ban)\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Upgrading\n\nPlease see [UPGRADING](UPGRADING.md) for detailed upgrade instructions.\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n## Testing\n\nRun the tests with:\n\n```shell\nvendor/bin/phpunit\n```\n\n## Security\n\nIf you discover any security related issues, please email open@cybercog.su instead of using the issue tracker.\n\n## Contributors\n\n| \u003ca href=\"https://github.com/antonkomarev\"\u003e![@antonkomarev](https://avatars.githubusercontent.com/u/1849174?s=110)\u003cbr /\u003eAnton Komarev\u003c/a\u003e | \u003ca href=\"https://github.com/badrshs\"\u003e![@badrshs](https://avatars.githubusercontent.com/u/26596347?s=110)\u003cbr /\u003ebadr aldeen shek salim\u003c/a\u003e | \u003ca href=\"https://github.com/rickmacgillis\"\u003e![@rickmacgillis](https://avatars.githubusercontent.com/u/8941225?s=110)\u003cbr /\u003eRick Mac Gillis\u003c/a\u003e | \u003ca href=\"https://github.com/AnsellC\"\u003e![@AnsellC](https://avatars.githubusercontent.com/u/2049714?s=110)\u003cbr /\u003eAnsellC\u003c/a\u003e | \u003ca href=\"https://github.com/joearcher\"\u003e![@joearcher](https://avatars.githubusercontent.com/u/1125046?s=110)\u003cbr /\u003eJoe Archer\u003c/a\u003e |\n| :---: | :---: |:--------------------------------------------------------------------------------------------------------------------------------------------:| :---: | :---: |\n| \u003ca href=\"https://github.com/Im-Fran\"\u003e![@Im-Fran](https://avatars.githubusercontent.com/u/30329003?s=110)\u003cbr /\u003eFrancisco Solis\u003c/a\u003e | \u003ca href=\"https://github.com/jadamec\"\u003e![@jadamec](https://avatars.githubusercontent.com/u/19595874?s=110)\u003cbr /\u003eJakub Adamec\u003c/a\u003e | \u003ca href=\"https://github.com/ilzrv\"\u003e![@ilzrv](https://avatars.githubusercontent.com/u/28765966?s=110)\u003cbr /\u003eIlia Lazarev\u003c/a\u003e | \u003ca href=\"https://github.com/ZeoKnight\"\u003e![@ZeoKnight](https://avatars.githubusercontent.com/u/1521472?s=110)\u003cbr /\u003eZeoKnight\u003c/a\u003e | |\n\n[Laravel Ban contributors list](../../contributors)\n\n## Alternatives\n\n- https://github.com/imanghafoori1/laravel-temp-tag\n\n## License\n\n- `Laravel Ban` package is open-sourced software licensed under the [MIT License](LICENSE) by [Anton Komarev].\n- `Fat Boss In Jail` image licensed under [Creative Commons 3.0](https://creativecommons.org/licenses/by/3.0/us/) by Gan Khoon Lay.\n\n## 🌟 Stargazers over time\n\n[![Stargazers over time](https://chart.yhype.me/github/repository-star/v1/83971055.svg)](https://yhype.me?utm_source=github\u0026utm_medium=cybercog-laravel-ban\u0026utm_content=chart-repository-star-cumulative)\n\n## About CyberCog\n\n[CyberCog](https://cybercog.su) is a Social Unity of enthusiasts. Research the best solutions in product \u0026 software development is our passion.\n\n- [Follow us on Twitter](https://twitter.com/cybercog)\n- [Read our articles on Medium](https://medium.com/cybercog)\n\n\u003ca href=\"https://cybercog.su\"\u003e\u003cimg src=\"https://cloud.githubusercontent.com/assets/1849174/18418932/e9edb390-7860-11e6-8a43-aa3fad524664.png\" alt=\"CyberCog\"\u003e\u003c/a\u003e\n\n[Anton Komarev]: https://komarev.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybercog%2Flaravel-ban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcybercog%2Flaravel-ban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybercog%2Flaravel-ban/lists"}