User
モデルとモデルがあるとしましょうPost
。Post
モデルにはフィールドが含まれていますuser_id
。
User
があり$hasMany
、Post
ありPost
ます。$belongsTo
User
編集後のアクションがあります。
PostsController::edit($id) {
if($this->request->isPost())
{
$this->Post->id = $id;
$this->Post->save();
}
$post = $this->Post->read($id);
$this->set(compact('post'));
}
AuthComponent
ユーザーのログインに使用します。
ユーザーがsome1 elseの投稿を編集できないようにするにはどうすればよいですか? これを行うための機能/オプションにケーキが組み込まれていますか? some1 は任意の ID でログインして編集アクションを投稿できるためです。投稿データを保存する場合でもありません-投稿が非公開であるとしましょう(所有者のみが表示する必要があります)-誰かが posts/edit/some_id を呼び出すと、この投稿の編集フォームが表示されます...
簡単な方法は、編集アクションの最初にこれを追加することです:
$this->Post->id = $id;
if($this->Post->readField('user_id') != $this->Auth->user('id'))
{ //trigger error or redirect }
しかし、ユーザーに属するデータを更新/読み取る各アクションの先頭にこれを追加する必要があります。だから私はこれを行うためのよりエレガントな方法を探しています。