0

私はCakePHPにかなり慣れていません。イベントを作成したユーザーのみがイベントを編集または削除できるようにしようとしているので、現在のユーザーIDを現在のイベントの「user_id」フィールドと比較しています(ユーザーがイベントを作成するときに保存されます)。私のコード(Andrew Perk)は次のとおりです。

public function isAuthorized($user) {
        $this->loadModel('User');
        if ($user['role'] == 'admin') {
            return true;
        }
        if (in_array($this->action, array('edit', 'delete'))) {
            if ($user['id'] != $this->request->data['Event']['user_id']) { ///THIS IS THE LINE I FEEL IS WRONG - PLEASE ADVISE
                //echo debug($event['user_id']);
                //$this->Session->setFlash(__('You are not allowed to edit someones event'));
                return false;
            }
        }
        return true;
    }
4

1 に答える 1

0

これを実現する方法はいくつかあります。私が見つけた最も効果的な方法は、変更しようとしているレコードの user_id を設定するモデルにコールバックを配置することです。そうすれば、レコードを CRUD しようとしているすべてのコントローラーですべてを混同する必要はありません。

ユーザーデータの制限について詳しくは、http: //blogchuck.com/2010/06/limit-data-by-user-with-cakephp/をご覧ください。

これは、データの削除にも適用されます。

それが役に立てば幸い。ハッピーコーディング!

于 2012-11-28T20:47:57.910 に答える