public async Task <ActionResult> ResetPassword(string id) { var context = new SphDataContext(); var setting = await context.LoadOneAsync <Setting>(x => x.Id == id); var model = new ResetPaswordModel { IsValid = true, Id = id }; if (null == setting) { model.IsValid = false; model.Mesage = "The link is invalid"; return(View(model)); } model.Email = setting.UserName; if ((DateTime.Now - setting.CreatedDate).TotalMinutes > 10) { model.IsValid = false; model.Mesage = "The link has expired"; return(View(model)); } var user = Membership.FindUsersByEmail(setting.UserName); if (user.Count == 0) { model.IsValid = false; model.Mesage = "Cannot find any user with email " + model.Email; } model.Email = setting.UserName; return(View(model)); }
public async Task <ActionResult> ResetPassword(ResetPaswordModel model) { var context = new SphDataContext(); var key = await context.LoadOneAsync <Setting>(x => x.Id == model.Id); if (null == key) { return(HttpNotFound("Cannot find any password reset key " + model.Id)); } var username = Membership.GetUserNameByEmail(model.Email); if (model.Password != model.ConfirmPassword) { return(Json(new { success = false, status = "PASSWORD_DOESNOT_MATCH", message = "Kata laluan anda tidak sama" })); } if (string.IsNullOrWhiteSpace(username)) { return(HttpNotFound("Cannot find any user registered with " + model.Email)); } var user = Membership.GetUser(username); if (null == user) { throw new Exception("Cannot find any user with email " + model.Email); } var ok = AdminController.CheckPasswordComplexity(Membership.Provider, model.Password); if (!ok) { return(Json(new { success = false, status = "PASSWORD_COMPLEXITY", message = "Kata laluan anda tidak mengikut kesesuaian yang ditetapkan" })); } var temp = user.ResetPassword(); user.ChangePassword(temp, model.Password); var profile = await context.LoadOneAsync <UserProfile>(u => u.UserName == username) ?? new UserProfile { UserName = username, Email = model.Email, HasChangedDefaultPassword = true, Id = username, StartModule = "" }; profile.HasChangedDefaultPassword = true; using (var session = context.OpenSession()) { session.Attach(profile); await session.SubmitChanges("Change password"); } if (Request.ContentType.Contains("application/json")) { this.Response.ContentType = "application/json; charset=utf-8"; return(Content(JsonConvert.SerializeObject(new { success = true, status = "OK" }))); } return(Redirect("/")); }