2009-11-10 12 views
6

イベントのインデックスページで権限を設定しようとしています。イベントのインデックスページでは、特定のユーザーがイベントを追加するときに設定したものを表示できます。ユーザーが自分のイベントをクリックすると、イベントコントローラーはユーザーIDを最初にチェックし、ユーザーを制御するイベントデータベースをチェックして、自分のカレンダーのどのイベントを見ることができます。ユーザーがイベントを作成して他のユーザーと共有すると、アクセス許可が追加されます。また、現在のユーザーIDを正確な1のイベントデータベースと比較するにはどうすればよいですか?ログイン後、他のページコントローラで現在のユーザーIDを調べる方法は?

この機能を実行するための提案はありますか? 私は現在のユーザーIDがすべてのイベントデータベースと比較され、現在のユーザーに特定のイベントが表示されるようにするコードと概念を知る必要があります。

ありがとうございます。

答えて

18

ユーザーデータにログインして取得するための推奨されるアプローチは、Authコンポーネント自体を経由する:

// in any controller 
$userId = $this->Auth->user('id'); 

CakePHP Bookの認証セクションにAccessing the logged in userを参照してください。

6

セッションを使用して、ページ間でユーザーのデータを保存および読み取る。コントローラー内

// store a user id in the session 
$this->Session->write('User.id', $userId); 

// read a user id from the session 
$userId = $this->Session->read('User.id'); 

ビュー内:あなたは "User.id" 以上の何かを好むならば、あなたが望む任意のキーを使用することができます

// read a user id from the session 
$userId = $session->read('User.id'); 

。私はそれを使用している場合はAuthComponentがデフォルトになっているので、これを単に使用します。

+1

+1を使用ケーキにページからページへ渡され、他のセッション、クエリ、データ、およびすべてのものを見、それにセッションコンポーネントは、ヘルパーがセッションに書き込む能力を持たないということです。 http://book.cakephp.org/view/484/Session – deizel

+1

その違いを指摘してくれてありがとう、私はそれを反映するために私の応答を更新しました。 –

2

あなたが探しているのはACL(アクセスコントロールリスト)です。調べるべきケーキにはAclComponentが組み込まれています。これは、ユーザーIDを保持するAuthComponentと一緒に動作します。最初は少し複雑でしたが、面倒なほどの価値がありました。

+0

AclComponentは、いくつかの*認可モジュールの内部でのみ使用されます。 AuthComponentは、*認証された*ユーザーだけでなく、他のトップレベルの認証関連のものを探す場所です。 – spinkus

1

また、簡単な方法として、modelcontrollerの設定をAuthComponent::authorizeとしてください。これにより、アクセスを決定するロジック(アクセスが許可されている場合はtrue、拒否された場合はfalse)を返すコントローラまたはモデル(選択肢)にisAuthorized()メソッドを定義できます。

関連する問題