2016-11-02 14 views
0

私はPhalcon 2.0.13プロジェクトでACLを使って権限を制御しています。私の質問です:isvoltedビューでisAllowedを使用する方法はありますか?

私の目標は、ユーザーの権限に基づいて.voltビューに表示されるいくつかのオプションを制御することです。これは私が私のベースコントローラの内部で実行するコードの一部である

if(!$this->acl->isAllowed($userRole, ucfirst($this->dispatcher->getControllerName()), $this->dispatcher->getActionName())){ 
     $this->response->redirect($this->url->get(['for' => 'admin-index-login'])); 

    } 

、私は、.voltビューのアクセス権のため{{ if isAllowed("User", "New") }} xxxx {{ endif }}

のようなものをチェックしたいと思います。ただ、私は意味機能している明確にする

ありがとうございました

+1

DIに 'acl'を定義した場合、' acl.isAllowed'のように呼び出すことができます。 –

答えて

0

ACLをサービスとして追加されている場合は、単に実行します。

{% if acl.isAllowed("User", "New") %} 

{% endif %} 

ボルトでカスタム関数する必要はありません。 Phalcon ACLメモリベースは、データベースよりもはるかに多くの選択肢を持っていますし、とにかく高速です。

+0

ありがとう!私はそれを試みます。私は自分のデータベースに基づいてaclパーミッションをロードし、次にこのようにチェックします。 –

0

これは私が解決したものです。管理者は役割、ユーザーグループ、または特定のユーザーに権限を設定できるため、私の権限システムがデータベースにあります。私は、ユーザがコントローラでの権限を持っているかどうかを確認する機能を作ったシステムでは、ユーザがログインすると、私は

  • の代わりに(私は前にそれをやっていた)ACLを使用してセッション中にすべての彼の権限を保つ

    1. /action(私の権限はACLのようなコントローラとアクションに基づいています)。
    2. 私は.voltビューで使用するカスタム関数を作成:

      $compiler = $volt->getCompiler(); 
      
          //Custom volt functions 
          $compiler->addFunction('has_permission', function($resolvedArgs, $exprArgs) { 
           return '\HelperFunctions::UserHasPermission(' . $resolvedArgs . ')'; 
          }); 
      

    UserHasPermissionは、ユーザーが権限を持っているかどうかを確認するために、コントローラとアクションの名前を受け取ります。私はこのようにそれを使用しています:ユーザーがUserControllerでのアクションのいずれかで許可を持っている場合、アクション名に

    {% if has_permission("user", "*") %} 
    
        <li> 
         <a href="#" title="Users"><i class="fa fa-lg fa-fw fa-user"></i> <span class="menu-item-parent">Users</span></a> 
         <ul> 
          <li> 
           <a href="{{ url(['for': 'admin-user-index']) }} " title="Users"><span class="menu-item-parent">Users</span></a> 
          </li> 
         </ul> 
        </li> 
    
        {% endif %} 
    

    *を意味します。

    これまでのところ私は解決策に満足しています。ある時点でPhalconのACLに戻したいのであれば、かなり簡単です。

  • 関連する問題