Auth-> AUTHORIZE =「アクション」を使用してグループではないユーザーに対してアクセス権をチェック

StackOverflow https://stackoverflow.com/questions/3413747

質問

いずれかは私にAuth->authorize = "actions"
の作業を説明することができます 私のプロジェクトでは、私はこれを与えるtpは予定しております。
このには教えてくれた者として認可は、

$this->Aro->check($user,"controllers/:controller/:action")を呼び出します

この右??
ユーザーに対してチェックされます その手段は、ユーザーがAROSテーブルに存在しなければなりません。
しかし、私は、ユーザーに対して確認するためにこれを必要としませんが、私はグループに対してチェックする必要があります
どのように私はこれはachiveことができます。

ユーザーがアロテーブルにないとき、今、それは

を示します

だから、アロのが唯一のグループになることとアロスへのユーザーの追加を必要とされている。

事前にthankz

役に立ちましたか?

解決

ソリューション
を手に入れました この参照を使用する
私はCustomAuthにAuthComponentのを拡張し、次のように

AuthComponentの中isAutorized()メソッドをオーバーライド

コントローラで/コンポーネント/ custom_auth.php

    <?php
App::import('Component','Auth');
class CustomAuthComponent extends AuthComponent {

    public function isAuthorized($type = null, $object = null, $user = null) {

        $actions  = $this->__authType($type);
        if( $actions['type'] != 'actions' ){
            return parent::isAuthorized($type, $object, $user);
        }
        if (empty($user) && !$this->user()) {
            return false;
        } elseif (empty($user)) {
            $user = $this->user();
        }


        $group = array('model' => 'Group','foreign_key' =>$user['Login']['group_id']);
        $valid = $this->Acl->check($group, $this->action());
        return $valid;
    }
}
?>

でapp_controller.phpで

function beforeFilter()
{
$this->CustomAuth->userModel = 'Login';
$this->CustomAuth->allowedActions = array('display');
$this->CustomAuth->actionPath = 'controllers/';
$this->CustomAuth->authorize = 'actions';
}

これは私の問題を解決しました

他のヒント

こののを見てみましょう。グループのアクセス許可を確認するために行う。この(「モデル」と「FOREIGN_KEY」値AROSテーブルからです):

$this->Acl->check(
     array('model' => 'Group', 'foreign_key' => 2),
    'controller/action'
);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top