したがって、(いくつかの条件に基づいて) 1 つのアクションが同じコントローラー内の別のアクションに切り替わる場合があります。
現在、最初のアクションは特定の役割 (コーチまたはトレーナー) を持つ人々に許可されていますが、その後のアクションはコーチにのみ許可されています。
ただし、2 番目のアクションに直接アクセスしていないため (中間アクションを介してのみ)、認証コンポーネントはその起動を妨げません。ここにいくつかのコードがあります:
public function isAuthorized($user) {
switch($this->action) {
case "bulkAction":
if ($user['role'] == ('coach' || 'trainer') ) {
return true;
}
break;
case "bulkDelete":
if ($user['role'] == 'coach') {
return true;
}
break;
}
return parent::isAuthorized($user);
}
public function bulkAction() {
switch($this->request->data['Action']) {
case "delete":
$this->bulkDelete();
break;
}
}
繰り返しになりますが、bulkAction がデータを bulkDelete アクションに送信すると、Auth は完全にバイパスされたように見え、アクションは実行されます。他のアクションによって呼び出されたアクションが、コントローラーの isAuthorized コールバックに対して引き続きチェックされるようにするにはどうすればよいですか?