@locks

Как создать пользователя при первом входе через ldap?

Изучаю 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);
}
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы