public override async Task <IDisplayResult> UpdateAsync(FacebookSettings settings, BuildEditorContext context)
        {
            if (context.GroupId == FacebookConstants.Features.Core)
            {
                var user = _httpContextAccessor.HttpContext?.User;

                if (user == null || !await _authorizationService.AuthorizeAsync(user, Permissions.ManageFacebookApp))
                {
                    return(null);
                }

                var model = new FacebookSettingsViewModel();
                await context.Updater.TryUpdateModelAsync(model, Prefix);

                if (context.Updater.ModelState.IsValid)
                {
                    var protector = _dataProtectionProvider.CreateProtector(FacebookConstants.Features.Core);
                    settings.AppId     = model.AppId;
                    settings.AppSecret = protector.Protect(model.AppSecret);
                    settings.FBInit    = model.FBInit;
                    settings.SdkJs     = model.SdkJs;
                    if (!string.IsNullOrWhiteSpace(model.FBInitParams))
                    {
                        settings.FBInitParams = model.FBInitParams;
                    }
                    settings.Version = model.Version;

                    await _shellHost.ReloadShellContextAsync(_shellSettings);
                }
            }

            return(await EditAsync(settings, context));
        }
Example #2
0
        public override async Task <IViewProviderResult> BuildUpdateAsync(PlatoFacebookSettings settings, IViewProviderContext context)
        {
            var model = new FacebookSettingsViewModel();

            // Validate model
            if (!await context.Updater.TryUpdateModelAsync(model))
            {
                return(await BuildEditAsync(settings, context));
            }

            // Update settings
            if (context.Updater.ModelState.IsValid)
            {
                // Encrypt the secret
                var secret = string.Empty;
                if (!string.IsNullOrWhiteSpace(model.AppSecret))
                {
                    try
                    {
                        secret = _encrypter.Encrypt(model.AppSecret);
                    }
                    catch (Exception e)
                    {
                        if (_logger.IsEnabled(LogLevel.Error))
                        {
                            _logger.LogError(e, $"There was a problem encrypting the Facebook app secret. {e.Message}");
                        }
                    }
                }

                // Create the model
                settings = new PlatoFacebookSettings()
                {
                    AppId        = model.AppId,
                    AppSecret    = secret,
                    CallbackPath = model.CallbackPath
                };

                // Persist the settings
                var result = await _facebookSettingsStore.SaveAsync(settings);

                if (result != null)
                {
                    // Recycle shell context to ensure changes take effect
                    _platoHost.RecycleShell(_shellSettings);
                }
            }

            return(await BuildEditAsync(settings, context));
        }
Example #3
0
        public async Task <IActionResult> IndexPost(FacebookSettingsViewModel viewModel)
        {
            // Ensure we have permission
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditFacebookSettings))
            {
                return(Unauthorized());
            }

            // Execute view providers ProvideUpdateAsync method
            await _viewProvider.ProvideUpdateAsync(new PlatoFacebookSettings(), this);

            // Add alert
            _alerter.Success(T["Settings Updated Successfully!"]);

            return(RedirectToAction(nameof(Index)));
        }
Example #4
0
        public override async Task <IViewProviderResult> BuildUpdateAsync(FacebookSettings settings, IViewProviderContext context)
        {
            var model = new FacebookSettingsViewModel();

            // Validate model
            if (!await context.Updater.TryUpdateModelAsync(model))
            {
                return(await BuildEditAsync(settings, context));
            }

            // Update settings
            if (context.Updater.ModelState.IsValid)
            {
                // Encrypt the secret
                var secret = string.Empty;
                if (!string.IsNullOrWhiteSpace(model.AppSecret))
                {
                    try
                    {
                        var protector = _dataProtectionProvider.CreateProtector(nameof(FacebookOptionsConfiguration));
                        secret = protector.Protect(model.AppSecret);
                    }
                    catch (Exception e)
                    {
                        _logger.LogError($"There was a problem encrypting the Facebook app secret. {e.Message}");
                    }
                }

                // Create the model
                settings = new FacebookSettings()
                {
                    AppId     = model.AppId,
                    AppSecret = secret
                };

                // Persist the settings
                var result = await _facebookSettingsStore.SaveAsync(settings);

                if (result != null)
                {
                    // Recycle shell context to ensure changes take effect
                    _platoHost.RecycleShellContext(_shellSettings);
                }
            }

            return(await BuildEditAsync(settings, context));
        }