所有者、管理者、およびユーザーの役割があります。所有者は 1 人だけで、それが私です。管理者による編集または削除を拒否するにはどうすればよいですか? 所有者の ID は 1 なので、管理者が所有者でない場合に isAuthorized() をチェックインする場合は、次のようにします$user['id'] != 1
。次に、編集または削除されているユーザーが所有者であるかどうかを確認する方法を説明します。これでユーザーIDを取得する方法は知っています$this->request->params['pass'][0]
が、ユーザーロールは知りません。
質問する
71 次
1 に答える
1
私は役割として「所有者」を持っているとは思いません。誰かが通常のロールタイプになることを許可してからowner_id
、アイテムテーブルにフィールドを保持する方がはるかに簡単です。
そうすれば、ロールに上位レベルの承認を任せることができ、個々のアイテムのアクション/メソッドで、所有権を確認できます(多くの場合isOwner()
、コードをDRYに保つためのカスタム関数を使用して行われます)。
PostsController->edit($id)
例としての関数では、投稿に対してを実行し、それfind()
を比較して、所有者である場合にのみ編集できることを確認できます。owner_id
$this->Auth->user('id')
Roleを取得して使用可能な状態に保ちたい場合は、AppControllerのbeforeFilterで、Auth->userroles
のフィールドに基づいてテーブルを通常どおりに検索できます。role_id
于 2013-01-11T14:44:55.453 に答える