public async Task <IActionResult> Update([DataSourceRequest] DataSourceRequest request, WebPluginConstantViewModel viewModel) { var tenantId = viewModel.TenantId; if (!isSysAdmin) { tenantId = db.CurrentTenantId; } var model = db.WebPluginConstants.First(n => n.TenantId == tenantId && n.WebPluginConstantId == viewModel.WebPluginConstantId); if (ModelState.IsValid) { await this.TryUpdateModelAsync <WebPluginConstantViewModel, WebPluginConstant>(model, "", m => { return(m.ElementType == null); }); if (model.Value.StartsWith("encrypt:")) { if (tenantId == null || !options.Value.UseExplicitTenantPasswords) { model.Value = PasswordSecurity.Encrypt(model.Value.Substring(8)); } else { var t = db.Tenants.First(n => n.TenantId == tenantId); if (!string.IsNullOrEmpty(t.TenantPassword)) { var pwd = Convert.FromBase64String(t.TenantPassword); model.Value = AesEncryptor.Encrypt(model.Value.Substring(8), pwd, false); } else { model.Value = PasswordSecurity.Encrypt(model.Value.Substring(8)); } } } model.TenantId = tenantId; await db.SaveChangesAsync(); } return(Json(await new[] { model.ToViewModel <WebPluginConstant, WebPluginConstantViewModel>() }.ToDataSourceResultAsync(request, ModelState))); }
public async Task <IActionResult> Destroy([DataSourceRequest] DataSourceRequest request, WebPluginConstantViewModel viewModel) { var tenantId = viewModel.TenantId; if (!isSysAdmin) { tenantId = db.CurrentTenantId; } var model = db.WebPluginConstants.First(n => n.TenantId == tenantId && n.WebPluginConstantId == viewModel.WebPluginConstantId); if (ModelState.IsValid) { db.WebPluginConstants.Remove(model); await db.SaveChangesAsync(); } return(Json(await new[] { viewModel }.ToDataSourceResultAsync(request, ModelState))); }