Symfony2: Как войти в систему с помощью OAuth (HWIOAuthBundle) + пользовательские роли (по умолчанию и загружаются из БД)

Замечания: вопросы находятся в конце этого текста, но я объясню подробно весь контекст для лучшего понимания.

m разработка приложения Symfony2, состоящего из 3 модулей:

Модуль для студентов -> Нужна рольROLE_STUDENTМодуль для учителей -> Нужна рольROLE_TEACHERМодуль для администраторов -> Нужна рольROLE_ADMIN

ролевая иерархия как следует:

ROLE_TEACHER: [ROLE_STUDENT]ROLE_ADMIN: [ROLE_TEACHER]

Следовательно:

Только учащийся (с ролью ROLE_STUDENT) может получить доступ ко всем страницам своего модуля, например:

http://server.com/students/anything

Учитель (с ролью ROLE_TEACHER) может получить доступ ко всем страницам учеников модуль и все страницы учителей модуль, такой как:

http://server.com/students/anythinghttp://server.com/teachers/anything

Администратор (с ролью ROLE_ADMIN) может получить доступ ко всем страницам модуль, все страницы учителей модуль и админ бэкэнд.

Система использует OAuth для аутентификации студентов и преподавателей через Twitter, используя комплектHWIOAuthBundle (с использованиемOAuthUserProvider пользовательский провайдер, который предоставляет пакет) .I '

удалось успешно аутентифицировать пользователей, но,по умолчанию все пользователи автоматически аутентифицируются с следующие роли:[ROLE_USER, ROLE_OAUTH_USER]

Итак, вот что я сделал. Ниже яя собираюсь объяснить, что я хочу, чтобы мое приложение делало, но я нене знаю путь:

Шаги для входа в систему с помощью OAuth:

Пользователь входит в систему и автоматически:

Если пользователь не существует в базе данных:

- Сохранить ник в таблице пользователей базы данных.

- Сохраните роль ROLE_STUDENT (для меня эта роль по умолчанию) в таблице пользователей базы данных.

Авторизуйтесь в системе, используя OAuth, но используя роль ROLE_STUDENT.

Если пользователь существует в базе данных:

- Проверьте, какую роль связал пользователь в базе данных.

Аутентифицировать пользователя в системе, используя OAuth, но используя роль, связанную с базой данных (т. Е. ROLE_STUDENT или ROLE_TEACHER).

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

Вопросы:

Как я могу аутентифицировать пользователя через OAuth (HWIOAuthBundle) с ролью, которую я хочу по умолчанию (ROLE_STUDENT, как я объяснил выше)?

Если в базе данных существует псевдоним со связанной ролью (ROLE_STUDENT или ROLE_TEACHER),как я могу аутентифицировать пользователя через OAuth (HWIOAuthBundle), но используя роль, загруженную из базы данных?

много читал на эту тему, но яя новичок с Symfony2 и я неНе знаю, какой самый лучший и самый простой способ решить это.

Заранее спасибо!

PS: если у вас есть какие-либо вопросы или сомнения, яЯ буду рад объяснить как можно лучше.

Ответы на вопрос(1)

Ваш ответ на вопрос