hasReference()
モデルでこの関数を使用できます。
たとえば、モデルには次のようなCustomer
関係があります。User
Customer:
relations:
user:
local: id
foreignID: id
foreignAlias: customer
次に、ユーザーが(コントローラー内の)顧客タイプであるかどうかをテストできます。
$this->getUser()->getGuardUser()->hasReference('customer');
これを簡単にするために、このメソッドをmyUser
クラスに追加できます。
public function isCustomer() {
return $this->getGuardUser()->hasReference('customer');
}
もちろんエンタープライズでも同じです。
2つの異なるテーブルを使用する場合でもhasCredential()
、このメソッドを使用できます。これは、許可を確認するだけの場合に最も簡単な方法です。
企業と顧客ユーザーの特定の属性にアクセスする場合は、両方のアプローチを組み合わせることもできます。
アップデート:
さて、顧客とエンタープライズユーザーが異なる権限を持っていると仮定すると、私はユーザーグループアプローチを使用します。これは、sfGuardのグループモデルにより適しています。次に、ユーザーがグループに属しCustomer
ていることがわかっている場合は、そのユーザーが顧客オブジェクトへの参照を持っていることがわかります。
ただし、これはもちろん、正しく機能するために適切なグループを新しいユーザーに割り当てる必要があることを意味します。