Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 //
 // 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);
 }