public PartialViewResult Restore(RestoreModel model) { if (model.Email.IsNullOrEmpty() || !model.Email.IsMailAdress()) { ModelState.AddModelError("", LabelDictionary.Translate( "Для восстановления пароля необходимо указать Email, использованный при регистрации")); } else { var user = Membership.GetUser(model.Email); if (user == null) { ModelState.AddModelError("", LabelDictionary.Translate( "Пользователь с таким Email не регистрировался на сайте")); } else { var res = MailingList.Get("RestorePassLetter") .To(model.Email) .WithReplacement(new MailReplacement("{PASSWORD}", user.GetPassword())).Send(); ModelState.AddModelError("", res.IsFilled() ? res : LabelDictionary.Translate( "Пароль для доступа к сайту был успешно отправлен на указанный Email")); } } return(PartialView(model)); }
public ActionResult Restore(RestoreModel model) { ApplicationUser user = UserManager.FindByEmail(model.Email); if (user == null) { ModelState.AddModelError("", "Пользователь не найден"); } if (ModelState.IsValid) { model.Id = user.Id; string token = UserManager.GeneratePasswordResetToken(user.Id); string callbackUrl = Url.Action("RestoreConfirm", "Account", new { model.Id, Code = token, model.Email }, Request.Url.Scheme); UserManager.SendEmail(user.Id, "Сброс пароля", "Для сброса пароля, перейдите по ссылке <a href=\"" + callbackUrl + "\">сбросить</a>"); return(Content("Проверьте почту")); } return(View()); }
public ActionResult SimpleRestore(RestoreModel model) { if (model.Email.IsNullOrEmpty() || !model.Email.IsMailAdress()) { model.ErrorText = "Для восстановления пароля необходимо указать Email, использованный при регистрации"; } else { var user = Membership.FindUsersByEmail(model.Email); if (user.Count == 0) { model.ErrorText = "Пользователь с таким Email не регистрировался на сайте"; } else { foreach (MembershipUser u in user) { var res = MailingList.Get("RestorePassLetter") .To(model.Email) .WithReplacement(new MailReplacement("{PASSWORD}", u.GetPassword())).Send(); model.ErrorText = res.IsFilled() ? res : "Пароль для доступа к сайту был успешно отправлен на указанный Email"; } } } return(PartialView(model)); }
/// <summary> /// 创建人:李超 /// 创建日期:2016/11/11 /// 方法阐述:创建回收站数据还原的方法 /// </summary> /// <param name="context"></param> public void RestoreData(HttpContext context) { bool result = false; try { var json = Common.GetRequest("DataJson"); if (json.IndexOf("[") == -1) { if (json.IndexOf("ArchivesMeasurement") == -1) //没有找到 { RestoreModel model = JsonConvert.DeserializeObject <RestoreModel>(json); result = MgrServices.RecycleBinService.RestoreData(model.RBID, model.TableName, model.FieldName, model.FieldValue, model.FieldNameDelete); } if (json.IndexOf("ArchivesMeasurement") >= 1) //找到了 { RestoreModel model = JsonConvert.DeserializeObject <RestoreModel>(json); result = MgrServices.RecycleBinService.InsertData(model.RBID, model.TableName, model.FieldName, model.FieldValue, model.FieldNameDelete); } } else { List <RestoreModel> model = JsonConvert.DeserializeObject <List <RestoreModel> >(json); for (int i = 0; i < model.Count; i++) { result = MgrServices.RecycleBinService.RestoreData(model[i].RBID, model[i].TableName, model[i].FieldName, model[i].FieldValue, model[i].FieldNameDelete); } } context.Response.Write(result); } catch (Exception ex) { context.Response.Write(result); } }
public ActionResult RestorePass(RestoreModel model) { try { string _login = model.Email; UsersModel UserInfo = _repository.getCustomer(_login); // Ошибки в форме if (!ModelState.IsValid) { // пустое поле if (_login == null || _login == "") { ModelState.AddModelError("", "Поле \"E-Mail\" не заполнено. Для восстановления пароля введите адрес почты."); } return(View(model)); } // существует ли адрес if (UserInfo != null) { // Формируем код востановления пароля Guid RestoreCode = Guid.NewGuid(); _repository.setRestorePassCode(UserInfo.Id, RestoreCode); #region оповещение на e-mail string Massege = String.Empty; Mailer Letter = new Mailer() { Theme = "Изменение пароля" }; Massege = "<p>Уважаемый " + UserInfo.FIO + ", Вы отправили запрос на смену пароля на сайте " + Request.Url.Host + ".</p>"; Massege += "<p>Для вас сформирована ссылка, перейдя по которой, Вы сможете ввести новый пароль для вашего аккаунта.</p>"; Massege += "<p><a href=\"https://" + Request.Url.Host + "/user/ChangePass/" + RestoreCode + "/\">https://" + Request.Url.Host + "/user/ChangePass/" + RestoreCode + "/</a></p>"; Massege += "<p>С уважением, администрация сайта!</p>"; Massege += "<hr><i><span style=\"font-size:11px\">Это сообщение отпралено роботом, на него не надо отвечать</i></span>"; Letter.MailTo = UserInfo.EMail; Letter.Text = Massege; string ErrorText = Letter.SendMail(); #endregion return(RedirectToAction("MsgSendMail", "User")); } else { ModelState.AddModelError("", "Адрес почты заполнен неверно. Попробуйте ещё раз"); } return(View(model)); } catch { return(View(model)); } }
public ApiResult Restore([FromBody] RestoreModel model) { _logger.LogDebug($"restore model={Newtonsoft.Json.JsonConvert.SerializeObject(model)}, userId={_userId}"); _siteMapModifyService.RestoreSiteMapItems( _siteId, _userId, model.ItemId, model.IsRestoreAllVersions ?? false, model.IsRestoreChildren ?? false, model.IsRestoreContentVersions ?? false, model.IsRestoreWidgets ?? false); return(ApiResult.Success()); }
public ActionResult RestoreConfirmValidate(RestoreModel model) { IdentityResult result = UserManager.ResetPassword(model.Id, model.Code, model.NewPassword); if (result.Succeeded) { return(RedirectToAction("Login")); } foreach (string error in result.Errors) { ModelState.AddModelError("", error); } return(View(model)); }
public ActionResult RestoreConfirm(RestoreModel model) { return(View(model)); }
public ActionResult RestorePassword(RestoreModel model) { var user = userBusinessLogic.User_GetByLogin(model.Login); if (user != null) { if (model.Choice == "email") { if (!string.IsNullOrEmpty(user.Email)) { UserEditModel userModel = new UserEditModel(); userModel = new UserEditModel(user); userModel.Password = UserEditModel.GeneratePassword(); try { userModel.SendEmail(); long userId = userBusinessLogic.User_Save(userModel.GetUserSaveData()); ViewBag.Message = "Письмо успешно отправлено на почту " + userModel.ReplaceEmail(user.Email); } catch (Exception e) { ViewBag.Message = e.Message; } } else { ViewBag.Message = string.Format("У пользователя [{0}] не указан e-mail. Обратитесь к администратору.", model.Login); } } if (model.Choice == "sms") { if (!string.IsNullOrEmpty(user.Phone)) { UserEditModel userModel = new UserEditModel(); userModel = new UserEditModel(user); userModel.Password = UserEditModel.GeneratePassword(); try { string result = userModel.SendSms(); if (string.IsNullOrEmpty(result)) { long userId = userBusinessLogic.User_Save(userModel.GetUserSaveData()); ViewBag.Message = "СМС отправлено на телефон " + userModel.ReplacePhone(userModel.Phone); } else { ViewBag.Message = result; } } catch (Exception e) { ViewBag.Message = e.Message; } } else { ViewBag.Message = string.Format("У пользователя [{0}] не указан телефон. Обратитесь к администратору.", model.Login); } } } else { ViewBag.Message = string.Format("Пользователь [{0}] не найден", model.Login); } return(View()); }
public async Task <APIResponse> Password([FromBody] RestoreModel model) { // validate if (BaseValidableModel.IsInvalid(model, out var errFields)) { return(APIResponse.BadRequest(errFields)); } var agent = GetUserAgentInfo(); var userLocale = GetUserLocale(); // captcha if (!HostingEnvironment.IsDevelopment()) { if (!await Core.Recaptcha.Verify(AppConfig.Services.Recaptcha.SecretKey, model.Captcha, agent.Ip)) { return(APIResponse.BadRequest(nameof(model.Captcha), "Failed to validate captcha")); } } // try find user var user = await UserManager.FindByEmailAsync(model.Email); if (user == null || !(await UserManager.IsEmailConfirmedAsync(user))) { return(APIResponse.Success()); } // confirmation token var token = Core.Tokens.JWT.CreateSecurityToken( appConfig: AppConfig, entityId: user.UserName, audience: JwtAudience.Cabinet, area: Common.JwtArea.RestorePassword, securityStamp: "", validFor: TimeSpan.FromHours(24) ); var callbackUrl = this.MakeAppLink(JwtAudience.Cabinet, fragment: AppConfig.Apps.Cabinet.RoutePasswordRestoration.Replace(":token", token)); // restoration email await EmailComposer.FromTemplate(await TemplateProvider.GetEmailTemplate(EmailTemplate.PasswordRestoration, userLocale)) .Link(callbackUrl) .Initiator(agent.Ip, agent.Agent, DateTime.UtcNow) .Send(model.Email, user.UserName, EmailQueue) ; // activity var userActivity = CoreLogic.User.CreateUserActivity( user: user, type: Common.UserActivityType.Password, comment: "Password restoration requested", ip: agent.Ip, agent: agent.Agent, locale: userLocale ); DbContext.UserActivity.Add(userActivity); await DbContext.SaveChangesAsync(); return(APIResponse.Success()); }