Изучаю Symfony. Настроил аутентификацию через LDAP, а хранение пользователей в БД.
Теперь хочу сделать "авто-регистрацию" при первом успешном входе. Куда правильнее поместить логику проверки и создания записи пользователя?
По документации вижу способ через имплементацию интерфейса UserLoaderInterface в репозитории или полностью кастомный провайдер?
class UserRepository extends ServiceEntityRepository implements UserLoaderInterface
{
public function loadUserByIdentifier(string $identifier): ?UserInterface
{
$user = $this->findOneBy(['email' => $identifier]);
if(null === $user) {
// create user
// $newEntity = $this->fetchUserFromLdap($identifier)
// $user = $this->add($newEntity );
}
return $user;
}
}
config/security.php
return static function (SecurityConfig $security, ContainerConfigurator $container) {
$security->provider('db_provider')
->entity()
->class(User::class)
->property('email');
$mainFirewall = $security->firewall('main');
$mainFirewall
->lazy(true)
->userChecker(UserChecker::class)
->formLoginLdap()
->service(Ldap::class)
->searchDn(env('LDAP_SEARCH_DN')->resolve())
->searchPassword(env('LDAP_SEARCH_PASSWORD')->resolve())
->dnString('ou=users,dc=local')
->queryString('(&(objectClass=gosaMailAccount)(mail={username}))')
->loginPath(Routes::LOGIN_PAGE)
->checkPath(Routes::LOGIN_PAGE);
}