Symfony2 несколько ролей для структуры рынка (FOSUser/PUGXMultiUser)
Я работаю над приложением на торговой площадке с Symfony2.
У меня есть две роли пользователя: buyer
а также seller
,
Роль по умолчанию - это buyer
поскольку все зарегистрированные пользователи смогут использовать торговую площадку в качестве покупателя. Я сейчас пользуюсь FOSUserBundle
для управления пользователями, но я недавно застрял, когда я хотел реализовать seller
часть приложения.
Мне нужно иметь три службы "регистрации", либо:
- Пользователь решает зарегистрироваться как
buyer
это основная форма регистрации, которую я настроил с помощью FOSUserBundle - Пользователь решает зарегистрироваться как
seller
, тогда мне нужна другая форма регистрации с более обязательными полями, но в любом случае пользователь с рольюseller
также будет иметь рольbuyer
которая является базовой ролью для всех пользователей. - Пользователь в настоящее время зарегистрирован как
buyer
решает обновить свой аккаунт доseller
один, будут запрошены только дополнительные поля
Поскольку каждый зарегистрированный пользователь имеет buyer
Роль моих занятий:
class User extends BaseUser implements UserInterface, \Serializable // Buyer
{
// ...
/**
* @ORM\OneToOne(targetEntity="Seller",inversedBy="user")
* @ORR\JoinColumn(name="seller_id",referencedColumn="id")
**/
private $seller;
}
class Seller
{
// ...
}
Для того, чтобы иметь возможность обрабатывать несколько регистрационных форм, я недавно попытался использовать PUGXMultiUserBundle
, но я не знаю, как заставить это работать с моим кодом.
Я использую отношение OneToOne, чтобы связать buyer
а также seller
но PUGXMultiUserBundle требует использования наследования с дискриминатором.
Это не проблема, я могу изменить свой код и уже пытался это сделать, но меня поразило то, что User
класс должен быть абстрактным.
Из того, что я понял, мои занятия должны быть такими:
User extends BaseUser (abstract)
Buyer extends User
Seller extends User
Но у меня есть:
User extends BaseUser (semantically my Buyer class)
Seller extends User
Что я должен делать? Как я могу реорганизовать свою иерархию классов? Является ли PUGXMultiUserBundle подходящим решением для того, что я хочу?
Спасибо