Я пытаюсь понять, как лучше всего реализовать следующее: как администратор, я могу создавать пакеты функций.Каждый пакет функций представляет собой сущность в приложении, которая включает в себя набор функций, которые пользователь может приобрести.
public class FeaturesPackage
{
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[MaxLength(30)]
[Required]
public string Title{ get; set; }
[Required]
public string Features { get; set; }
public decimal Price { get; set; }
}
Например: Бронзовый пакет может иметь следующие функции: «can-create-Remder, Can-See».-аналитика и т. д. "
Каждый пользователь может приобрести более одной упаковки.Это описано с использованием этой модели:
public class FeaturesPackagePurchase
{
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[Required]
[ForeignKey("Owner")]
public int OwnerId { get; set; }
[Required]
[ForeignKey("FeaturesPackage")]
public Guid FeaturesPackageId { get; set; }
[Required]
public DateTime PurchaseDate { get; set; }
[Required]
public decimal Price { get; set; }
public DateTime StartDate { get; set; }
public DateTime ExpirationDate { get; set; }
public UserAppData Owner { get; set; }
public FeaturesPackage FeaturesPackage { get; set; }
}
Теперь я хочу заблокировать некоторые методы контроллера (маршруты) для пользователя, который имеет указанные открытые функции.Что-то вроде
[Authorize(Feature="can-see-analytics")]
public AnalyticsData GetUserAnalytics () {}
Создание новой политики для каждой функции кажется сложным.Есть ли лучший способ?