Задать вопрос
@KonstantinVasilev
вебмастер

Как сделать авторизацию по двум таблицам в Symfony?

Для создания пользователя нужно настроить поля командой:
php bin/console make:user

Инструкции планирую использовать эти:
https://symfony.ru/doc/current/security.html
https://symfonycasts.com/screencast/symfony-securi...

Но у меня должно быть две категории пользователей с разными полями (поля для логина будут в обоих), но чтобы вход был через одну форму.

Есть ли примерная инструкция?

Прошу прощения, если вопрос глупый. Я только начинаю осваивать фреймворки.
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Разные категории пользователей в Symfony лучше всего организовать при помощи ролей.

Основная таблица users будет содержать всех ваших пользователей, это проще всего. Там же и будет поле с ролями.

Для дополнительных полей другой категории пользователей лучше всего создать отдельную таблицу, которая будет связана с основной через связь one-to-one либо one-to-many по id пользователя (посмотрите уроки по Doctrine).

Однако, если пользователей с этими дополнительными полями будет подавляющее большинство, то можно не усложнять, а смело создавать эти поля в основной таблице users.

Очень советую досмотреть полностью уроки с symfonycasts.com. Они великолепны, и там точно всё необходимое должно быть.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Если объединять пользователей с разными полями не хочется, то можно поступить проще и использовать Chain User Provider

Тогда достаточно будет только строчки в конфиге, а сущности будут чище, без лишних связей
# config/packages/security.yaml
security:
    # ...
    providers:
        backend_users:
            ldap:
                # ...

        legacy_users:
            entity:
                # ...

        users:
            entity:
                # ...

        all_users:
            chain:
                providers: ['legacy_users', 'users', 'backend_users']
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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