Użytkownicy o różnych możliwościach

Tworzę aplikację ASP.Net MVC 5. W mojej witrynie istnieją 3 różne typy użytkowników.

AdministratorNormalni użytkownicyRestauracje

Każdy z tych użytkowników ma własne możliwości i prawa dostępu. Oznacza to, że widok dla każdego z nich powinien być inny.

Stworzyłem modele zarówno dla normalnej, jak i restauracji. Zastanawiałem się, jak mogę zmodyfikować moją istniejącą strukturę, aby obsługiwać tę funkcjonalność.

public class User : IUser
{
    public User()
        : this(String.Empty)
    {
    }

    public User(string userName)
    {
        UserName = userName;
        Id = Guid.NewGuid().ToString();
    }

    [Key]
    public string Id { get; set; }

    [Required]
    public string UserName { get; set; }

    [Required]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    public string Phone { get; set; }
    public string MobilePhone { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    public virtual IList<UserAddress> Addresses { get; set; }
}

public class Restaurant
{
    [Key]
    public int ID { get; set; }

    [Required]
    public string Name { get; set; }

    public virtual IList<RestaurantAddress> Addresses { get; set; }

    public virtual IList<RestaurantFood> Menu { get; set; }

    public virtual IList<Review> Reviews { get; set; }

    [DataType(DataType.Url)]
    public string Website { get; set; }

    [DataType(DataType.PhoneNumber)]
    public string Phone { get; set; }

    [DataType(DataType.PhoneNumber)]
    public string Fax { get; set; }

    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    public int Seats { get; set; }

    public double AverageRating { get; set; }
    public double AveragePrice { get; set; }
}

questionAnswers(3)

yourAnswerToTheQuestion