LongitudeOne\BannedBundle is a very small bundle for Symfony framework. Banned users won't be able to login on your application.
Make sure Composer is globally installed, as explained in the installation chapter of the Composer documentation.
Open a command console, enter your project directory and execute:
$ composer require longitude-one/banned-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
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],
];
First, your user class should implement the BannedInterface, then add the stub method isBanned
.
// 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!