Blokowanie logowania się użytkowników w Symfony 3

Jako, że logowanie na bazie FosUserBundle na razie mi nie działa, oddzieliłam dotychczasowe sukcesy od bieżących wyzwań. Zauważyłam również, że na stabilnej części skryptów można zalogować się na froncie posiadając w bazie pole is_active ustawione na 0.

Mimo iż docelowo raczej nie będę korzystać z tych mechanizmów to i tak  postanowiłam to naprawić. Po krótkiej lekturze dokumentacji, kilka krótkich modyfikacji załatwiło sprawę.


W EcoDevBundle\Entity\User.php dodałam

use Symfony\Component\Security\Core\User\AdvancedUserInterface;
[...]
class User implements AdvancedUserInterface
[...]
/**
  * @ORM\Column(name="is_active", type="boolean")
  */
private $isActive;
[...]
public function __construct()
{
    parent::__construct();
}

public function isAccountNonExpired()
{
    return true;
}

public function isAccountNonLocked()
{
    return true;
}

public function isCredentialsNonExpired()
{
    return true;
}

public function setIsActive($isActive)
{
    $this->isActive = $isActive;
} 

Te kilka linijek załatwiło sprawę i od tego momentu użytkownicy zablokowani (posiadający is_active w bazie ustawione na 0 ) utracili możliwość logowania 😉