アプリケーションの設計は、必要なセキュリティニーズに基づいて異なります。
たとえば、情報は複数のデータベースに保存されていますか、それとも単一のデータベースに保存されていますか?各タイプのユーザーに、特定の権限を表すデータベースのスキーマを提示することが重要ですか?明らかに、これらの質問に対する答えは、データベースアクセスのためにより安全なシステムが必要かどうかを示唆しています。
その場合は、システムに存在するユーザーのタイプごとにデータベースユーザーを作成します。各ユーザーに、適切なテーブル、ビュー、プロシージャなどへのアクセス許可を付与します。ユーザーがシステムに対して認証を行う場合、そのユーザーのユーザータイプに基づいて条件付きデータベース接続を作成する必要があります。
さらに極端な場合は、ストアドプロシージャを介してデータベースへのアクセスを厳密に制御することも適切です。その場合、各データベースユーザーは、必要なストアドプロシージャのセットにのみアクセスできます。
データベースにセキュリティを実装することは苦痛であり、アプリケーションの複雑さとそれを維持するためのコストを増加させ、アプリケーションIMOの全体的な結束を低下させますが、ハッキングやその他の方法でセキュリティの壁を非常に厳しくします。システムを悪用します。
セキュリティの目的でデータベース内に何を実装するかに関係なく、現在認証されているユーザーとそのタイプを格納するためにセッションメカニズムを使用する必要があることも明らかです。特定のユーザーの機能を変更する簡単な方法は、各ユーザーの使用可能なアクション(関数またはメソッドの読み取り)とその属性(またはプロパティ)をクラス内にカプセル化して、特定のユーザーを表すことです。そうすれば、2人がDashboard.phpにアクセスした場合、アクセスできるデータが正確に表示されます。
最後に、データベースに保存されているユーザーに関する情報(情報を表示する必要のある都市や監督しているユーザーなど)を使用して、一部のアクセス制御を制御できます(おそらく制御する必要があります)。次に、その情報を使用して、ユーザー固有のドメインオブジェクトからアクセスできるオブジェクトのコレクションを作成します。