クライアントがログインしてクライアント データのレポートを表示できる複雑なレポート アプリケーションがあります。アプリケーションには、さまざまなコントローラーを使用してデータベース呼び出しが行われるセクションがいくつかあります。クライアント A がヘッダー操作によってクライアント B の情報を取得しないようにする必要があります。
システムが認証し、clientID と roleID を割り当てます。roleID >1 の場合は、データをホストしている会社で働いていることを意味し、すべてのクライアント情報を表示できます。基本的に次のように機能するキャッチオールを作成したいと思います。
if($roleID > 1) {
...send query to database
}else {
if(...does this query select a record with clientID other than my $auth->clientID){
do not execute query
}else {
execute query
}
}
問題は、サーバーに送信されるすべてのクエリに対してこれを実行することです...このコードをアプリケーションとDBの間の「障害物」として配置するにはどうすればよいですか? 私はすでに Zend_Profiler を使用してクエリを調べているので、何らかの形で可能であることはわかっていますが、プロファイラーのコードからこれを識別することはできません...
私はいつでも認証関数を作成し、選択したクエリをそのように渡すことができますが、このキャッチオールはすべての呼び出しで実装するのが簡単で、将来的にも保証されます. どんな助けでも大歓迎です。