Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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)));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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));
        }