public ActionResult Manage(LocalPasswordModel model, HttpPostedFileBase fotoperfil) { bool hasLocalAccount = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name)); ViewBag.HasLocalPassword = hasLocalAccount; ViewBag.ReturnUrl = Url.Action("Manage"); string fileName = ""; string path = ""; string defaultimage = "/Images/profilepictures/default.jpg"; //foto por defecto string foto = model.Foto; string contrasenya = ""; if (hasLocalAccount) { // ChangePassword iniciará una excepción en lugar de devolver false en determinados escenarios de error. bool changePasswordSucceeded; try { contrasenya = model.OldPassword; //por defecto la contraseña a modificar es la actual changePasswordSucceeded = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.NewPassword); if (changePasswordSucceeded == false && model.NewPassword!=null) //si he querido cambiar la contraseña pero la actual no { ModelState.AddModelError("", "La contraseña actual es incorrecta o la nueva contraseña no es válida."); return View(model); } if(model.NewPassword!=null) //si quiero cambiar la contraseña contrasenya = model.NewPassword; UsuarioCEN usu = new UsuarioCEN(); if (fotoperfil != null && fotoperfil.ContentLength > 0) { fileName = Path.GetFileName(fotoperfil.FileName); // store the file inside ~/App_Data/uploads folder string[] aux2 = fileName.Split('.'); string formato = aux2[1]; path = Path.Combine(Server.MapPath("~/Images/profilepictures"), User.Identity.Name+"."+formato); //string pathDef = path.Replace(@"\\", @"\"); fotoperfil.SaveAs(path); foto = "/Images/profilepictures/" + User.Identity.Name+"."+formato; } usu.ModificarPerfil(User.Identity.Name, model.Email, model.Nombre, model.Apellidos, model.Localidad, model.Provincia, contrasenya, model.Fecha, foto);//Modify(en.Nombre, en.Nombre, en.Nombre, model.NewPassword); } catch (Exception) { changePasswordSucceeded = false; } if (changePasswordSucceeded) { return RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess }); } else { ModelState.AddModelError("", "La contraseña actual es incorrecta o la nueva contraseña no es válida."); } } else { // El usuario no dispone de contraseña local, por lo que debe quitar todos los errores de validación generados por un // campo OldPassword ModelState state = ModelState["OldPassword"]; if (state != null) { state.Errors.Clear(); } if (ModelState.IsValid) { try { WebSecurity.CreateAccount(User.Identity.Name, model.NewPassword); return RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess }); } catch (Exception) { ModelState.AddModelError("", String.Format("No se puede crear una cuenta local. Es posible que ya exista una cuenta con el nombre \"{0}\".", User.Identity.Name)); } } } // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario return View(model); }
// // GET: /Account/Manage public ActionResult Manage(ManageMessageId? message) { ViewBag.StatusMessage = message == ManageMessageId.ChangePasswordSuccess ? "La contraseña se ha cambiado." : message == ManageMessageId.SetPasswordSuccess ? "Su contraseña se ha establecido." : message == ManageMessageId.RemoveLoginSuccess ? "El inicio de sesión externo se ha quitado." : ""; ViewBag.HasLocalPassword = OAuthWebSecurity.HasLocalAccount(WebSecurity.GetUserId(User.Identity.Name)); ViewBag.ReturnUrl = Url.Action("Manage"); LocalPasswordModel model = new LocalPasswordModel(); UsuarioCEN usuCEN = new UsuarioCEN(); UsuarioEN usu = new UsuarioEN(); usu = usuCEN.DevuelveUsuarioPorNomUsu(User.Identity.Name); model.Nombre = usu.Nombre; model.Apellidos = usu.Apellidos; model.Provincia = usu.Provincia; model.Localidad = usu.Localidad; model.Fecha = usu.FechaNacimiento; model.Foto = usu.Foto_perfil; model.Email = usu.Email; return View(model); }