私は、次のような5レベルのユーザーがいるWebアプリケーションを持っています
- 管理者
- 組織責任者
- ローカルカンパニー長
- 先生
- 両親
- 学生
現在、すべてのユーザーは異なるランディング ページを持っているか、多かれ少なかれタブや機能を持っています。
ログインプロセスを簡素化できるように、それを1つのエンティティとして作成し、次に別のエンティティでロールを作成するだけであることを知りたい
代わりに twig 関数を使用しis_granted()
、Security コンポーネントにロールを処理させる必要があります。これには、ネストされたロール定義など、いくつかの進歩があります。http://symfony.com/doc/current/book/security.html#rolesでさらに多くの情報を見つけることができます。
その道を行くことを強くお勧めします!
{% if is_granted('ROLE_ADMINISTRATOR') %}
Do something
{% endif %}
これは、あなたがそれをどのように行うかの例です
あなたのコントローラー:
public function indexAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
return $this->render('YourBundle:Page:index.html.twig', array('user_role' => $user->getRole()));
}
小枝:
{% if user_role == "administrator" %}
Menu 1, menu 2, menu3
{% elseif user_role == "organizationhead" %}
Menu 1, Menu 4
{% elseif user_role == "etc" %}
Menu 5
{% endif %}