これは、stackoverflow に関する私の最初の質問なので、お手柔らかにお願いします。MVC4、Entity Framework、SimpleMembership を使用して、倉庫アプリケーションへのカスタマー ポータルを作成しています。倉庫は、複数の企業のコンテンツをホストしています。各企業には、部門と部門があります。ユーザーは、会社、部門、部門の情報にさまざまなアクセス権を持ちます。アクセス制御のためのエレガントなソリューションを探しています。これまでのところ、私のモデルは次のようになります。
public class UserProfile
{
UserProfile()
{
this.AccessControl = new HashSet<AccessControl>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public Nullable<int> CompanyId { get; set; }
public virtual ICollection<AccessControl> { get; set; }
public virtual Company Company { get; set; }
}
public class AccessControl
{
public int AccessControlId { get; set; }
public int UserId { get; set; }
public int CompanyId { get; set; }
public Nullable<int> DivisionId { get; set; }
public Nullable<int> DepartmentId { get; set; }
public Boolean ReadAccess { get; set; }
public Boolean WriteAccess { get; set; }
// other properties for access control
public virtual UserProfile UserProfile { get; set; }
public virtual Company Company { get; set; }
public virtual Division Division { get; set; }
public virtual Department Department { get; set; }
}
public class Content
{
public int ContentId { get; set; }
public int CompanyId { get; set; }
public int DivisionId { get; set; }
public int DepartmentId { get; set; }
// Various other properties
public virtual Company Company { get; set; }
public virtual Division Division { get; set; }
public virtual Department { get; set; }
}
私の考えでは、NULL Division はすべての部門を意味し、NULL Department はすべての部門を意味します。私の質問は次のとおりです。
- アクセス制御リストに基づいてユーザーのコンテンツ オブジェクトのリストを取得し、CRUD ビューで部門と部門の選択リストを入力するためのリポジトリ メソッドを作成するエレガントな方法は何ですか?
- このアクセス制御リストをモデル化するより良い方法はありますか?