public async Task <IActionResult> Create(RegistroViewModel model) { if (ModelState.IsValid) { Usuario usuario = new Usuario(); usuario.NombreUsuario = model.Username; usuario.Correo = model.Correo; usuario.Salt = UtilsMethods.GenerarSalt(); usuario.Contrasenia = Crypto.HashPassword(model.Contrasenia + usuario.Salt); usuario.IdRol = 2; usuario.FechaModifica = DateTime.Now; usuario.IpModifica = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); _context.Add(usuario); await _context.SaveChangesAsync(); int ultimoUsuario = _context.Usuarios. OrderByDescending(u => u.IdUsuario).FirstOrDefault().IdUsuario; Cliente cliente = new Cliente(); cliente.Nombre = model.Nombres; cliente.Apellidos = model.Apellidos; cliente.Direccion = model.Direccion; cliente.Genero = model.Genero; cliente.IdUsuario = ultimoUsuario; cliente.FechaModifica = DateTime.Now; cliente.IpModifica = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); _context.Add(cliente); await _context.SaveChangesAsync(); UtilsMethods.EnviarCorreo(usuario); return(RedirectToAction(nameof(Index))); } return(View(model)); }
public async Task <IActionResult> Recuperacion(RecuperacionViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var usuario = await _context.RecuperaContrasenias.Include(u => u.IdUsuarioNavigation) .FirstOrDefaultAsync(u => u.Token == model.Token); if (usuario != null) { if (usuario.IdUsuarioNavigation != null) { Usuario user = usuario.IdUsuarioNavigation; user.Salt = UtilsMethods.GenerarSalt(); user.Contrasenia = CryptoHelper.Crypto.HashPassword(model.Contrasenia + user.Salt); user.FechaModifica = DateTime.Now; user.IpModifica = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString(); usuario.Token = "Expired"; _context.Update(usuario); _context.Update(user); await _context.SaveChangesAsync(); ViewBag.Message = "Contraseña modificada con éxito"; return(View(nameof(Index))); } } else { ViewBag.Error = "Token no válido"; return(View("Index")); } return(View(model)); }