public override async Task <IDisplayResult> UpdateAsync(TwitterSettings settings, BuildEditorContext context) { if (context.GroupId == TwitterConstants.Features.Twitter) { var user = _httpContextAccessor.HttpContext?.User; if (!await _authorizationService.AuthorizeAsync(user, Permissions.ManageTwitter)) { return(null); } var model = new TwitterSettingsViewModel(); await context.Updater.TryUpdateModelAsync(model, Prefix); if (context.Updater.ModelState.IsValid) { var protector = _dataProtectionProvider.CreateProtector(TwitterConstants.Features.Twitter); settings.ConsumerKey = model.APIKey; settings.ConsumerSecret = protector.Protect(model.APISecretKey); settings.AccessToken = model.AccessToken; settings.AccessTokenSecret = protector.Protect(model.AccessTokenSecret); await _shellHost.ReleaseShellContextAsync(_shellSettings); } } return(await EditAsync(settings, context)); }
public ActionResult Twitter(TwitterSettingsViewModel model) { Settings.Instance.TwitterId = model.Id; Settings.Instance.TwitterDisplayCount = model.DisplayCount; Settings.Instance.TwitterFilterDate = model.FilterDate; Settings.SaveSettings(Settings.Instance); return(this.View(model)); }
public ActionResult Twitter() { var model = new TwitterSettingsViewModel(); model.Id = Settings.Instance.TwitterId; model.FilterDate = Settings.Instance.TwitterFilterDate; model.DisplayCount = Settings.Instance.TwitterDisplayCount; return(this.View(model)); }
public async Task <IActionResult> IndexPost(TwitterSettingsViewModel viewModel) { // Ensure we have permission if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditTwitterSettings)) { return(Unauthorized()); } // Execute view providers ProvideUpdateAsync method await _viewProvider.ProvideUpdateAsync(new PlatoTwitterSettings(), this); // Add alert _alerter.Success(T["Settings Updated Successfully!"]); return(RedirectToAction(nameof(Index))); }
public override async Task <IViewProviderResult> BuildUpdateAsync(PlatoTwitterSettings settings, IViewProviderContext context) { var model = new TwitterSettingsViewModel(); // Validate model if (!await context.Updater.TryUpdateModelAsync(model)) { return(await BuildEditAsync(settings, context)); } // Update settings if (context.Updater.ModelState.IsValid) { // Encrypt the secret var consumerSecret = string.Empty; var accessTokenSecret = string.Empty; if (!string.IsNullOrWhiteSpace(model.ConsumerSecret)) { try { consumerSecret = _encrypter.Encrypt(model.ConsumerSecret); } catch (Exception e) { if (_logger.IsEnabled(LogLevel.Error)) { _logger.LogError(e, $"There was a problem encrypting the Twitter consumer secret. {e.Message}"); } } } if (!string.IsNullOrWhiteSpace(model.AccessTokenSecret)) { try { accessTokenSecret = _encrypter.Encrypt(model.AccessTokenSecret); } catch (Exception e) { if (_logger.IsEnabled(LogLevel.Error)) { _logger.LogError(e, $"There was a problem encrypting the Twitter access token secret. {e.Message}"); } } } // Create the model settings = new PlatoTwitterSettings() { ConsumerKey = model.ConsumerKey, ConsumerSecret = consumerSecret, CallbackPath = model.CallbackPath, AccessToken = model.AccessToken, AccessTokenSecret = accessTokenSecret }; // Persist the settings var result = await _twitterSettingsStore.SaveAsync(settings); if (result != null) { // Recycle shell context to ensure changes take effect _platoHost.RecycleShellContext(_shellSettings); } } return(await BuildEditAsync(settings, context)); }
public override async Task <IViewProviderResult> BuildUpdateAsync(TwitterSettings settings, IViewProviderContext context) { var model = new TwitterSettingsViewModel(); // Validate model if (!await context.Updater.TryUpdateModelAsync(model)) { return(await BuildEditAsync(settings, context)); } // Update settings if (context.Updater.ModelState.IsValid) { // Encrypt the secret var consumerSecret = string.Empty; var accessTokenSecret = string.Empty; if (!string.IsNullOrWhiteSpace(model.ConsumerSecret)) { try { var protector = _dataProtectionProvider.CreateProtector(nameof(TwitterOptionsConfiguration)); consumerSecret = protector.Protect(model.ConsumerSecret); } catch (Exception e) { _logger.LogError($"There was a problem encrypting the Twitter app secret. {e.Message}"); } } if (!string.IsNullOrWhiteSpace(model.AccessTokenSecret)) { try { var protector = _dataProtectionProvider.CreateProtector(nameof(TwitterOptionsConfiguration)); accessTokenSecret = protector.Protect(model.AccessTokenSecret); } catch (Exception e) { _logger.LogError($"There was a problem encrypting the Twitter app secret. {e.Message}"); } } // Create the model settings = new TwitterSettings() { ConsumerKey = model.ConsumerKey, ConsumerSecret = consumerSecret, AccessToken = model.AccessToken, AccessTokenSecret = accessTokenSecret }; // Persist the settings var result = await _TwitterSettingsStore.SaveAsync(settings); if (result != null) { // Recycle shell context to ensure changes take effect _platoHost.RecycleShellContext(_shellSettings); } } return(await BuildEditAsync(settings, context)); }