longitude-one / banned-bundle
Banned user (non)-authentication
Requires
- php: ^7.4|^8.0
- symfony/security-bundle: ^4.4|^5.4|^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.19|^3.8
- nyholm/symfony-bundle-test: ^1.8|^2.0
- phpunit/phpunit: 9.*
README
LongitudeOne\BannedBundle is a very small bundle for Symfony framework. Banned users won't be able to login on your application.
Installation
Make sure Composer is globally installed, as explained in the installation chapter of the Composer documentation.
Applications that use Symfony Flex
Open a command console, enter your project directory and execute:
$ composer require longitude-one/banned-bundle
Applications that don't use Symfony Flex
Step 1: Download the Bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require longitude-one/banned-bundle
Step 2: Enable the Bundle
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php
file of your project:
// config/bundles.php return [ // ... LongitudeOne\BannedBundle\LongitudeOneBannedBundle::class => ['all' => true], ];
Configuration
First, your user class should implement the BannedInterface, then add the stub method isBanned
.
Example
// src/Entity/User.php namespace App\Entity; // declare the interface use LongitudeOne\BannedBundle\Entity\BannedInterface; use Symfony\Component\Security\Core\User\UserInterface; // add the interface class User implements BannedInterface, UserInterface { //Add a private property private bool $banned = false; //Your getter can be improved to avoid that an admin bans another one. public function isBanned(): bool { //In this example admins cannot be banned return $this->isBanned() and !in_array('ROLE_ADMIN', $this->getRoles()); } //Add a setter if needed public function setBanned(bool $banned): self { $this->banned = $banned; return $this; } //... }
Step2, configure the security layer:
Add the UserChecker service to your security config:
# config/security.yaml security: ... firewalls: ... main: ... user_checker: lo_banned.user_checker
Jobs done!