public override async Task <IViewProviderResult> BuildUpdateAsync(AttachmentSettings settings, IViewProviderContext context) { var model = new AttachmentSettingsViewModel(); // Validate model if (!await context.Updater.TryUpdateModelAsync(model)) { return(await BuildEditAsync(settings, context)); } // Update settings if (context.Updater.ModelState.IsValid) { //// Encrypt the password //var username = model.SmtpSettings.UserName; //var password = string.Empty; //if (!string.IsNullOrWhiteSpace(model.SmtpSettings.Password)) //{ // try // { // password = _encrypter.Encrypt(model.SmtpSettings.Password); // } // catch (Exception e) // { // if (_logger.IsEnabled(LogLevel.Error)) // { // _logger.LogError($"There was a problem encrypting the SMTP server password. {e.Message}"); // } // } //} //settings = new EmailSettings() //{ // SmtpSettings = new SmtpSettings() // { // DefaultFrom = model.SmtpSettings.DefaultFrom, // Host = model.SmtpSettings.Host, // Port = model.SmtpSettings.Port, // UserName = username, // Password = password, // RequireCredentials = model.SmtpSettings.RequireCredentials, // EnableSsl = model.SmtpSettings.EnableSsl, // PollingInterval = model.SmtpSettings.PollInterval, // BatchSize = model.SmtpSettings.BatchSize, // SendAttempts = model.SmtpSettings.SendAttempts, // EnablePolling = model.SmtpSettings.EnablePolling // } //}; var result = await _attachmentSettingsStore.SaveAsync(settings); if (result != null) { // Recycle shell context to ensure changes take effect _platoHost.RecycleShellContext(_shellSettings); } } return(await BuildEditAsync(settings, context)); }
// --------------- // Settings // --------------- public async Task <IActionResult> Settings(RoleIndexOptions opts, PagerOptions pager) { // Ensure we have permission if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageAttachmentSettings)) { return(Unauthorized()); } _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Admin", "Plato.Admin") .LocalNav() ).Add(S["Attachments"], manage => manage .Action("Index", "Admin", "Plato.Attachments") .LocalNav() ).Add(S["Settings"]); }); // default options if (opts == null) { opts = new RoleIndexOptions(); } // default pager if (pager == null) { pager = new PagerOptions(); } // Get default options var defaultViewOptions = new RoleIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = new AttachmentSettingsViewModel() { Options = opts, Pager = pager }; // Add view model to context this.HttpContext.Items[typeof(AttachmentSettingsViewModel)] = viewModel; // Return view return(View((LayoutViewModel)await _settingsViewProvider.ProvideIndexAsync(new AttachmentSetting(), this))); }