Вы идете об этом неправильно.Если типы авторизации являются чем-то общим и важным, то вам следует смоделировать это непосредственно в модели данных, а не пытаться навязать эту структуру в коде внешнего контроллера.
Если у вас есть фиксированный набор полномочий, вам следует создать объект для моделирования этих полномочий.
Facebook{
accessToken:string
experationDate:date
authorization<-->Authorizations.facebook
}
Google{
username:string
password:string
authorization<-->Authorizations.google
}
Authorizations{
user<-->User.authorizations
facebook<-->Facebook.authorization
google<-->Google.authorization
}
Теперь у вас есть все ваши полномочия, записанные в модели данных, к которой они принадлежат.Чтобы подтянуть вещи больше.Вы можете добавить пользовательский метод в класс User
, чтобы контролировать добавление и удаление авторизаций.
Ключевой идеей здесь является то, что вся логика, управляющая данными, должна быть как можно более инкапсулирована в модель данных.Это позволяет (1) тестировать все операции с данными независимо от интерфейса и (2) легко добавлять и удалять элементы интерфейса, не нарушая модель данных.