public async Task <ActionResult> Edit(string p_type, IFormCollection fc) { //var targetType = Type.GetType(p_type); var targetType = apiHelper.TaskTypes().FirstOrDefault(x => x.FullName.Equals(p_type)); var model = Activator.CreateInstance(targetType); bool success = false; string message = ""; try { if (await TryUpdateModelAsync(model, model.GetType(), "")) { var mod = model as BaseTask; PuckMeta taskMeta = null; if (mod.ID != -1) { taskMeta = repo.GetPuckMeta().Where(x => x.ID == mod.ID).FirstOrDefault(); taskMeta.Value = JsonConvert.SerializeObject(mod); } else { taskMeta = new PuckMeta(); taskMeta.Name = DBNames.Tasks; taskMeta.Key = mod.GetType().FullName; taskMeta.Value = taskMeta.Value = JsonConvert.SerializeObject(mod); repo.AddMeta(taskMeta); } repo.SaveChanges(); StateHelper.UpdateTaskMappings(true); success = true; } else { success = false; message = string.Join(" ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage)); } } catch (Exception ex) { success = false; message = ex.Message; log.Log(ex); } return(Json(new { success = success, message = message })); }
public async Task <ActionResult> ForgotPassword(ForgottenPassword model) { if (ModelState.IsValid) { var user = await userManager.FindByEmailAsync(model.Email); if (user == null) { //ModelState.AddModelError("", "Email doesn't exist"); ViewBag.SuccessMessage = $"An email will be sent to the specified address with instructions on how to reset your password, if the address matches our records"; return(View(model)); } var token = Guid.NewGuid().ToString(); var meta = new PuckMeta { Name = DBNames.PasswordResetToken , Key = token , Value = model.Email }; repo.AddMeta(meta); repo.SaveChanges(); var uri = HttpContext.Request.GetUri() ?? PuckCache.FirstRequestUrl; var resetUrl = uri.Scheme + "://" + uri.Host + (uri.Port != 80 ? (":" + uri.Port) : "") + $"/puck/admin/resetpassword?token={token}"; puck.core.Helpers.ApiHelper.Email( model.Email , "Reset your password - Puck CMS" , $"click <a href=\"{resetUrl}\">here</a> to reset your password." ); ViewBag.SuccessMessage = $"An email will be sent to the specified address with instructions on how to reset your password, if the address matches our records"; return(View(model)); } return(View(model)); }
public async Task <JsonResult> EditParameters(string puck_settingsType, string puck_modelType, string puck_propertyName, IFormCollection fc) { string key = string.Concat(puck_settingsType, ":", puck_modelType, ":", puck_propertyName); //var targetType = Type.GetType(puck_settingsType); var targetType = ApiHelper.EditorSettingTypes().FirstOrDefault(x => x.FullName == puck_settingsType); var model = Activator.CreateInstance(targetType); bool success = false; string message = ""; try { if (await this.TryUpdateModelAsync(model, targetType, "")) { PuckMeta settingsMeta = null; settingsMeta = repo.GetPuckMeta().Where(x => x.Name == DBNames.EditorSettings && x.Key == key).FirstOrDefault(); if (settingsMeta != null) { settingsMeta.Value = JsonConvert.SerializeObject(model); } else { settingsMeta = new PuckMeta(); settingsMeta.Name = DBNames.EditorSettings; settingsMeta.Key = key; settingsMeta.Value = JsonConvert.SerializeObject(model); repo.AddMeta(settingsMeta); } //clear cached values var cachePrefix = "editor_settings_"; var cacheKey = cachePrefix + key; cache.Remove(cacheKey); cache.Remove("null_" + cacheKey); var instruction = new PuckInstruction() { Count = 2, ServerName = ApiHelper.ServerName(), InstructionDetail = $"{cacheKey},{"null_"+cacheKey}", InstructionKey = InstructionKeys.RemoveFromCache }; repo.AddPuckInstruction(instruction); repo.SaveChanges(); ApiHelper.OnAfterSettingsSave(this, new puck.core.Events.AfterEditorSettingsSaveEventArgs { Setting = (I_Puck_Editor_Settings)model , SettingsTypeFullName = puck_settingsType , ModelTypeName = puck_modelType , PropertyName = puck_propertyName }); success = true; } else { success = false; message = string.Join(" ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage)); } } catch (Exception ex) { success = false; message = ex.Message; log.Log(ex); } return(Json(new { success = success, message = message })); }