8722 sujets

Développement web côté serveur, CMS

Bonjour/Bonsoir,

J'essaie en vain de mettre en place une nouvelle condition pour les loggins (en plus du pseudo et du password, le user doit également avoir son champ "enabled" sur true : c'est l'admin qui l'active) . Donc en suivant la doc j'ai créé un fichier UserChecker.php
<?php
namespace App\Security;

use App\Security\AccountDisabledException;
use App\Entity\User as AppUser;
use Symfony\Component\Security\Core\Exception\AccountExpiredException;
use Symfony\Component\Security\Core\User\UserCheckerInterface;
use Symfony\Component\Security\Core\User\UserInterface;

class UserChecker implements UserCheckerInterface
{
    public function checkPreAuth(UserInterface $user)
    {
        if (!$user instanceof AppUser) {
            return;
        }

            // L’utilisateur n’est pas activé par l’administrateur
            if (!$user->enabled()) {
                throw new AccountDisabledException();       
            }
    }

    public function checkPostAuth(UserInterface $user)
    {
        
    }
}
dans un sous dossier "Security" que j'ai créé dans le dossier src.
j'ai ajouté le chemin de ce fichier dans mon security.yaml come ceci :

firewalls:
            main:
            anonymous: true
            provider : in_database
            user_checker: App\Security\UserChecker 

Et enfin j'ai créée cette nouvelle exception "AccountDisabledException" dans ce même dossier "Security" comme ceci :

<?php

namespace App\Security;

use Symfony\Component\Security\Core\Exception\AccountStatusException;



class AccountDisabledException extends AccountStatusException
{
    /**
     * {@inheritdoc}
     */
    public function getMessageKey()
    {
        return 'Votre compte est désactivé.';
    }
}


Où me suis je planté ?? Smiley sweatdrop

ps : il fallait juste remplacer "enabled" par getEnabled() .. et ça marche nickel (par contre j'ai pas le message "Votre compte est désactivé." Smiley rolleyes )
Modifié par moko (08 Mar 2020 - 01:39)