public async Task FillSubscriptions(BeAuthIdentity user) { var set = _context.Set <Subscription>(); var subscriptions = await set.Where(_ => _.User == user.Id) .Include(_ => _.Products) .ToListAsync(); await ValidateSubscriptions(subscriptions, user); }
private static Subscription CreateDefaultSubscription(BeAuthIdentity user) { return(new Subscription { Owner = user.Id, User = user.Id, Status = SubscriptionStatus.Active, Products = new List <SubscriptionProduct> { new SubscriptionProduct { Id = "", ProductId = "", Product = new Product { Id = "", Name = "Default" } } } }); }
public static ClaimsIdentity IssueFor(BeAuthIdentity user) { //Cache operations // Get subscription information. var subscription = user.Subscriptions.FirstOrDefault(p => p.Number == user.ActiveSubscription); subscription ??= user.Subscriptions.FirstOrDefault(); // Issue var identity = new ClaimsIdentity("BeAuthIdentity"); identity.AddClaim(new Claim(SubscriptionClaimTypes.User, subscription.User)); identity.AddClaim(new Claim(SubscriptionClaimTypes.Owner, subscription.Owner)); foreach (var product in subscription.Products) { identity.AddClaim(new Claim(SubscriptionClaimTypes.Product, product.Product.Name)); } return(identity); }
public async Task ValidateSubscriptions(ICollection <Subscription> subscriptions, BeAuthIdentity user) { if (subscriptions == null || subscriptions.Count == 0) { subscriptions = new List <Subscription> { CreateDefaultSubscription(user) }; } user.Subscriptions = subscriptions; }