public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); var token = filterContext.HttpContext.Request.Cookies["kcToken"]?.Value; UserModel user = null; if (!string.IsNullOrEmpty(token)) { user = Task.Run(() => (new UserProvider(new HttpClient())).GetUserAsync(token)).Result; } if (user == null) { DateTime?subscriptionExpiresAt = AppSettingProvider.SubscriptionExpiresAt; var message = new MessageModel { Caption = null, Message = "You haven't authenticated with proper Kentico Cloud credentials. Please close the browser window and log in.", MessageType = MessageType.Error }; filterContext.Result = subscriptionExpiresAt == null?RedirectHelpers.GetSelfConfigIndexResult(message) : RedirectHelpers.GetSelfConfigRecheckResult(message); } }
public async Task <ActionResult> Recheck(string token) { string actualToken = token ?? GetToken(); if (!string.IsNullOrEmpty(actualToken)) { try { if (!string.IsNullOrEmpty(token)) { AddAuthenticationCookie(token); } IEnumerable <SubscriptionModel> subscriptions; try { subscriptions = await _subscriptionProvider.GetSubscriptionsAsync(actualToken); } catch (UnauthorizedAccessException) { return(RedirectHelpers.GetSelfConfigRecheckResult(new MessageModel { Caption = null, Message = MESSAGE_UNAUTHENTICATED, MessageType = MessageType.Error })); } if (subscriptions == null || !subscriptions.Any()) { return(View("NoSubscriptions")); } else { SubscriptionStatusResults results = await _subscriptionProvider.GetSubscriptionsStatusAsync(actualToken, subscriptions); if (results.Status == SubscriptionStatus.Active) { if (results.Projects.Any(p => p.ProjectId == AppSettingProvider.ProjectId && p.Inactive == false)) { try { AppSettingProvider.SubscriptionExpiresAt = subscriptions.FirstOrDefault(s => s.Projects.Any(p => p.Id == AppSettingProvider.ProjectId))?.CurrentPlan?.EndAt; } catch (ConfigurationErrorsException ex) { return(RedirectHelpers.GetSelfConfigRecheckResult(new MessageModel { Caption = null, Message = ex.Message, MessageType = MessageType.Error })); } return(RedirectHelpers.GetHomeRedirectResult(new MessageModel { Caption = null, Message = "The previously known expiration date of your subscription does not apply anymore. You can run your sample app as before.", MessageType = MessageType.Info })); } else { AddSecurityInfoToViewBag(); return(View("SelectOrCreateProject", new SelectProjectViewModel { Projects = results.Projects.Where(p => p.Inactive == false) })); } } else { ViewBag.EndAt = results.EndAt; return(View(results.Status.ToString(), new SelectProjectViewModel { Projects = results.Projects.Where(p => p.Inactive == false) })); } } } catch (JsonException ex) { return(RedirectHelpers.GetSelfConfigRecheckResult(new MessageModel { Caption = null, Message = $"{CAPTION_DESERIALIZATION_ERROR}: {ex.Message}", MessageType = MessageType.Error })); } } else { return(RedirectHelpers.GetSelfConfigRecheckResult(new MessageModel { Caption = null, Message = MESSAGE_UNAUTHENTICATED, MessageType = MessageType.Error })); } }