2015-11-21 2 views
0

У меня есть приложение Symfony, которое имеет несколько подсайтов. Каждый сайт имеет собственный набор пользователей, но все пользователи хранятся в одной таблице. Все пользователи привязаны к одному субсайту, а не к 2 или более.Ограничение доступа пользователя symfony к подсайту

Предоставление пользователю возможности использовать отдельную учетную запись на нескольких сайтах не является вариантом, указанным в прецеденте этого веб-сайта.

У меня есть RequestSubscriber, который определяет, какой сайт в настоящее время запрашивается (на основе имени хоста), и добавляет дополнительную информацию в атрибуты объекта Request.

Когда пользователь пытается войти в систему, symfony должен только пытаться загружать пользователей с текущего дочернего сайта, а не всех пользователей.

У меня есть класс репозитория Doctrine, который реализует метод loadUserByUsername, но это только получает запрошенное имя пользователя.

Что было бы лучшим способом настроить UserProvider, чтобы попытаться загрузить только пользователей из текущего сайта? Могу ли я настроить безопасность таким образом, чтобы была передана дополнительная информация?

ответ

0

Одно из возможных решений, которое я уже получил, - это ввести RequestStack в класс Repository и использовать его для добавления дополнительных параметров в мой запрос.

Мне нужно написать декоратор для Doctrine EntityManager, чтобы убедиться, что он вводится, когда запрашивается репозиторий, но это не проблема.

Мне не очень нравится это решение, поэтому я ищу лучшие альтернативы (если есть).

Смежные вопросы