public async Task <ActionResult> Register(RegisterViewModel model) { SistemaJYREntities db = new SistemaJYREntities(); if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Cedula = model.Cedula, Nombre = model.Nombre, Apellido1 = model.Apellido1, Apellido2 = model.Apellido2, Rol = 3, Estado = true }; AspNetUsers validacion = null; try { validacion = db.AspNetUsers.Where(x => x.Cedula == model.Cedula).First(); } catch (System.Exception) { validacion = null; } if (validacion != null) { Session["Ced"] = "Duplicada"; return(View(model)); } var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { result = await UserManager.AddToRoleAsync(user.Id, "Cliente"); //await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); Session["usuario"] = user; // Para obtener más información sobre cómo habilitar la confirmación de cuentas y el restablecimiento de contraseña, visite https://go.microsoft.com/fwlink/?LinkID=320771 // Enviar correo electrónico con este vínculo string callbackUrl = await EnviarCorreoAsync(user.Id, "Confirma tu cuenta", 1); Session["MensajeIndex"] = "Confirma tú cuenta"; return(RedirectToAction("Index", "Home")); } AddErrors(result); } // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario return(View(model)); }
public async Task <ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return(View(model)); } // Require the user to have a confirmed email before they can log on. var user = await UserManager.FindByNameAsync(model.Email); if (user != null) { if (!await UserManager.IsEmailConfirmedAsync(user.Id)) { string callbackUrl = await EnviarCorreoAsync(user.Id, "Confirma tu cuenta-Reenviado", 1); Session["MensajeIndex"] = "Confirma tu cuenta-Reenviado"; ViewBag.errorMessage = "Debe confirmar su correo para iniciar sesión." + "La confirmación ha sido reenviada a su correo electrónico."; return(RedirectToAction("Index", "Home")); } else { Session["usuario"] = user; } } // No cuenta los errores de inicio de sesión para el bloqueo de la cuenta // Para permitir que los errores de contraseña desencadenen el bloqueo de la cuenta, cambie a shouldLockout: true var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : true); switch (result) { case SignInStatus.Success: Models.SistemaJYREntities en = new SistemaJYREntities(); ApplicationUser userr = new ApplicationUser(); AspNetUsers us = en.AspNetUsers.Where(x => x.Email == model.Email).First(); userr.Nombre = us.Nombre; userr.Apellido1 = us.Apellido1; userr.Apellido2 = us.Apellido2; userr.Cedula = us.Cedula; userr.Email = us.Email; userr.UserName = us.UserName; userr.Rol = us.Rol; userr.Estado = us.Estado; Session["usuario"] = userr; return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: Session["MensajeIndex"] = "Lockout"; return(RedirectToAction("Index", "Home")); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, model.RememberMe })); case SignInStatus.Failure: default: ModelState.AddModelError("", "Usuario o contraseña incorrectos, intentelo de nuevo."); return(View(model)); } }