public ActionResult CambiarPass(int id, CambioClaveView cambio) { Usuario usuario = null; Empleado empleado = null; try { empleado = repositorioEmpleado.ObtenerPorId(id); usuario = repositorioUsuario.ObtenerPorEmail(empleado.Email); if (User.IsInRole("Empleado")) { // verificar clave antigüa var pass = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: cambio.ClaveVieja ?? "", salt: System.Text.Encoding.ASCII.GetBytes("Salt"), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 1000, numBytesRequested: 256 / 8)); if (usuario.Clave != pass) { TempData["Error"] = "Clave incorrecta"; //se rederige porque no hay vista de cambio de pass, está compartida con Edit return(RedirectToAction("Edit", new { id = id })); } } if (ModelState.IsValid) { usuario.Clave = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: cambio.ClaveNueva, salt: System.Text.Encoding.ASCII.GetBytes("Salt"), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 1000, numBytesRequested: 256 / 8)); repositorioUsuario.Modificacion(usuario); TempData["Mensaje"] = "Contraseña actualizada correctamente. Ingresar nuevamente por favor"; return(RedirectToAction("Logout", "Usuario")); } else { foreach (ModelStateEntry modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { TempData["Error"] += error.ErrorMessage + "\n"; } } return(RedirectToAction("Edit", new { id = id })); } } catch (Exception ex) { TempData["Error"] = ex.Message; TempData["StackTrace"] = ex.StackTrace; return(RedirectToAction("Edit", new { id = id })); } }
public ActionResult CambiarPass(int id, CambioClaveView cambio) { Propietario propietario = null; try { // recuperar propietario original propietario = repositorio.ObtenerPorId(id); // verificar clave antigüa var pass = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: cambio.ClaveVieja ?? "", salt: System.Text.Encoding.ASCII.GetBytes(config["Salt"]), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 1000, numBytesRequested: 256 / 8)); if (propietario.Clave != pass) { TempData["Error"] = "Clave incorrecta"; // se rederige porque no hay vista de cambio de pass, está compartida con Edit return(RedirectToAction("Edit", new { id = id })); } if (ModelState.IsValid) { propietario.Clave = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: cambio.ClaveNueva, salt: System.Text.Encoding.ASCII.GetBytes(config["Salt"]), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 1000, numBytesRequested: 256 / 8)); repositorio.Modificacion(propietario); TempData["Mensaje"] = "Contraseña actualizada correctamente"; return(RedirectToAction(nameof(Index))); } else//estado inválido {//pasaje de los errores del modelstate a un string en tempData foreach (ModelStateEntry modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { TempData["Error"] += error.ErrorMessage + "\n"; } } return(RedirectToAction("Edit", new { id = id })); } } catch (Exception ex) { TempData["Error"] = ex.Message; TempData["StackTrace"] = ex.StackTrace; return(RedirectToAction("Edit", new { id = id })); } }
public ActionResult CambiarPass(int id, CambioClaveView cambio) { Usuario usuario = null; try { usuario = repositorioUsuario.ObtenerPorId(id); if (ModelState.IsValid) { usuario.Clave = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: cambio.ClaveNueva, salt: System.Text.Encoding.ASCII.GetBytes("Salt"), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 1000, numBytesRequested: 256 / 8)); repositorioUsuario.Modificacion(usuario); TempData["Mensaje"] = "Contraseña actualizada correctamente. Ingresar nuevamente por favor"; return(RedirectToAction("Logout")); } else { foreach (ModelStateEntry modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { TempData["Error"] += error.ErrorMessage + "\n"; } } return(RedirectToAction("Edit", new { id = id })); } } catch (Exception ex) { TempData["Error"] = ex.Message; TempData["StackTrace"] = ex.StackTrace; return(RedirectToAction("Edit", new { id = id })); } }