2011-08-02 7 views
3

ログインしたユーザにルートやパスが許可されていない場合、テンプレート内のいくつかのリンクを非表示にする必要があります。このようなもの:howto経路とセキュリティアクセス制御を統合する

{% if allowedroute 'fos_user_security_logout' %}  
<a href="{{ path('fos_user_security_logout') }}" class="action-logout"> 
    {{ 'layout.logout'|trans({}, 'FOSUserBundle') }} 
    </a> 
{% endif %} 

セキュリティアクセスコントロールでは、ログオンしているユーザーはどのように判断できますか?

$securityContext->isRouteGranted('routeName'); 
or 
$securityContext->isUriGranted('uri/path'); 

答えて

1

私の知る限りでは、小枝からのルートへのアクセスをチェックする方法はありません: は、このようないくつかの機能があるかもしれませ。ただし、ユーザーの役割とのsecurity.yml ACCESS_CONTROLルートを設定する必要があるため、あなたはテンプレートでの役割ベースの認証チェックできます

{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %} 
// logout link here 
{% endif %} 

をそれは、動的ではありませんが、あなたのルートは多くのことを変更しない限り、それはshouldn問題ではない。

+0

ありがとうございます。ありがとうございますが、私はセキュリティアクセスマップを使用してルートまたはURIによってリンクの可視性を判断しようとしています。このメソッドは、KnpMenuのような多くの場合に使用できます。 – zerkalica

+0

私は、KnpMenuBundleの基本機能を拡張し、設定、ルート、翻訳、セキュリティコンテキストのサポートを追加するMillwrightMenuBundleを書いた。 リソース/ doc/index.mdの設定例とオプションの説明 https://github.com/zerkalica/MillwrightMenuBundle – zerkalica

+0

このバンドルを使用すると、会社/ {id}/show company/{idのような動的なメニューを作成できますか} /関数twig変数をレンダリングするための詳細は? – nysander

0

KnpMenuBundle - you need to extend menu renderer and menu item classes to support permissionsの項目を非表示にしたい場合。 SecurityExtraBundleを見て、コントローラーのアクションに権限を与え、セキュリティ権限をルートにバインドすることもできます。私が知る限り、Sf2には現時点でそれがありません。コントローラ内で次のような注釈付きの例を試すことができます。

/** 
* @Route("/create", name="create_group") 
* @Secure(roles="ROLE_CREATE_GROUP") 
* @Template() 
*/ 
public function createGroupAction(Request $request) { 
関連する問題