public async Task <ActionResult> Login(Usuario entidad) { Usuario aux = new Usuario(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(_baseurl); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage res = await client.GetAsync("api/Usuario/GetOneByString/5?id=" + entidad.Usuario1); if (res.IsSuccessStatusCode) { var auxRes = res.Content.ReadAsStringAsync().Result; aux = JsonConvert.DeserializeObject <Usuario>(auxRes); if (aux != null) { if (Cryptography.Decrypt(aux.Contrasena) != entidad.Contrasena) { if (aux.LoginCount > 3) { aux.IsTemp = true; aux.Contrasena = Cryptography.Encrypt(Cryptography.RandomPassword()); aux.LoginCount = 0; var myContent = JsonConvert.SerializeObject(aux); var buffer = Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var postTask = client.PostAsync("api/Usuario/Update", byteContent).Result; var result = postTask; if (result.IsSuccessStatusCode) { PasswordMail.UsuarioBloqueado(aux.Usuario1, aux.Correo); ModelState.AddModelError(string.Empty, "Su usuario ha sido bloqueado debido a multiples inicios erroneos.\n Seleccione Olvido su contraseña para restablecerla."); return(View(entidad)); } } else { aux.LoginCount += 1; var myContent = JsonConvert.SerializeObject(aux); var buffer = Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var postTask = client.PostAsync("api/Usuario/Update", byteContent).Result; var result = postTask; if (result.IsSuccessStatusCode) { ModelState.AddModelError(string.Empty, "Usuario o contraseña incorrectos"); return(View(entidad)); } } } else { if (aux.IsTemp != true) { client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); res = await client.GetAsync("api/Persona/GetOneByString/5?id=" + aux.Cedula); auxRes = res.Content.ReadAsStringAsync().Result; Persona persona = JsonConvert.DeserializeObject <Persona>(auxRes); Session["Nombre"] = persona.Nombre; Session["Usuario"] = aux.Usuario1; Session["Tipo"] = aux.IdTipoUsuario; aux.LoginCount = 0; var myContent = JsonConvert.SerializeObject(aux); var buffer = Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var postTask = client.PostAsync("api/Usuario/Update", byteContent).Result; return(RedirectToAction("Index", "Home")); } else { Session["Usuario"] = aux.Usuario1; Session["Tipo"] = aux.TipoUsuario; return(RedirectToAction("PasswordReset", "Usuario")); } } } else { ModelState.AddModelError(string.Empty, "Usuario o contraseña incorrectos"); return(View(entidad)); } } else { ModelState.AddModelError(string.Empty, "No hay conexion con el servidor. Contacte un administrador"); return(View(entidad)); } } return(View(entidad)); }
public async Task <ActionResult> ForgotPassword(Usuario entidad) { Usuario aux = new Usuario(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(_baseurl); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage res = await client.GetAsync("api/Usuario/GetOneByString/5?id=" + entidad.Usuario1); if (res.IsSuccessStatusCode) { var auxRes = res.Content.ReadAsStringAsync().Result; aux = JsonConvert.DeserializeObject <Usuario>(auxRes); if (aux != null) { if (aux.Cedula == entidad.Cedula && aux.Correo == entidad.Correo) { aux.Contrasena = Cryptography.RandomPassword(); PasswordMail.RestablecerContraseña(aux.Usuario1, aux.Contrasena, aux.Correo); aux.Contrasena = Cryptography.Encrypt(aux.Contrasena); aux.LoginCount = 0; aux.IsTemp = true; var myContent = JsonConvert.SerializeObject(aux); var buffer = Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var postTask = client.PostAsync("api/Usuario/Update", byteContent).Result; var result = postTask; if (entidad.IdTipoUsuario == 4) { return(RedirectToAction("Index", "Usuario")); } if (result.IsSuccessStatusCode) { return(RedirectToAction("Login", "Usuario")); } else { ModelState.AddModelError(string.Empty, "No hay conexion con el servidor. Contacte a su administrador"); return(View(entidad)); } } else { ModelState.AddModelError(string.Empty, "Los datos ingresados no son validos."); return(View(entidad)); } } else { ModelState.AddModelError(string.Empty, "Los datos ingresados no son correctos"); return(View(entidad)); } } else { ModelState.AddModelError(string.Empty, "No hay conexion con el servidor. Contacte a su administrador"); return(View(entidad)); } } }
public async Task <ActionResult> Create(Usuario entidad) { Persona aux = new Persona(); Pais auxPais = new Pais(); Iglesia auxIgle = new Iglesia(); string contrasena = Cryptography.RandomPassword(); entidad.Contrasena = contrasena; PasswordMail.UsuarioCreado(entidad.Usuario1, entidad.Contrasena, entidad.Correo); entidad.MontoAdeudado = 0; using (var client = new HttpClient()) { client.BaseAddress = new Uri(_baseurl); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage res = await client.GetAsync("api/Persona/GetOneByString/5?id=" + entidad.Cedula); HttpResponseMessage resIglesia = await client.GetAsync("api/Iglesia/GetOneById/5?id= " + entidad.IdIglesia); if (res.IsSuccessStatusCode && resIglesia.IsSuccessStatusCode) { var auxRes = res.Content.ReadAsStringAsync().Result; var auxResIgle = resIglesia.Content.ReadAsStringAsync().Result; aux = JsonConvert.DeserializeObject <Persona>(auxRes); auxIgle = JsonConvert.DeserializeObject <Iglesia>(auxResIgle); res = await client.GetAsync("api/Pais/GetOneById/5?id= " + aux.IdPais); if (res.IsSuccessStatusCode) { auxRes = res.Content.ReadAsStringAsync().Result; auxPais = JsonConvert.DeserializeObject <Pais>(auxRes); } } } entidad.Descuento = (int)auxPais.Descuento + (int)auxIgle.Descuento; entidad.Contrasena = Cryptography.Encrypt(entidad.Contrasena); entidad.IsTemp = true; entidad.LoginCount = 0; using (var client = new HttpClient()) { client.BaseAddress = new Uri(_baseurl); var myContent = JsonConvert.SerializeObject(entidad); var buffer = Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var postTask = client.PostAsync("api/Usuario/Insert", byteContent).Result; var result = postTask; if (result.IsSuccessStatusCode) { return(RedirectToAction("Index")); } } ModelState.AddModelError(string.Empty, "Server Error, Please contact administrator"); return(View(entidad)); }