public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { } return(View(modelo)); }
public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { var usuario = await UserManager.FindByEmailAsync(modelo.Email); if (usuario == null) { return(SenhaOuUsuarioInvalidos()); } var signInResultado = await SignInManager.PasswordSignInAsync( usuario.UserName, modelo.Senha, isPersistent : modelo.ContinuarLogado, shouldLockout : false); switch (signInResultado) { case SignInStatus.Success: return(RedirectToAction("Index", "Home")); default: return(SenhaOuUsuarioInvalidos()); } } // Algo de errado aconteceu return(View(modelo)); }
public async Task <ActionResult> Login(ContaLoginViewModel model) { if (ModelState.IsValid) { var usuario = await UserManager.FindByEmailAsync(model.Email); if (usuario == null || usuario.EmailConfirmed == false) { return(SenhaOuUsuarioInvalido()); } var singInResult = await SignInManager.PasswordSignInAsync( usuario.UserName, model.Senha, isPersistent : model.ContinuarLogado, shouldLockout : true); switch (singInResult) { case SignInStatus.Success: return(RedirectToAction("Index", "Home")); case SignInStatus.LockedOut: var senhaCorreta = await UserManager.CheckPasswordAsync(usuario, model.Senha); if (senhaCorreta) { ModelState.AddModelError("", "Conta Bloqueada"); break; } ModelState.AddModelError("", "As Credenciais estão invalias!"); break; default: return(SenhaOuUsuarioInvalido()); } } return(View(model)); }
public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { //recebe o usuario pelo email var usuario = await UserManager.FindByEmailAsync(modelo.Email); //se usuário não existir if (usuario == null) { SenhaOuUsuariosInvalidos(); } //gerenciador responsável pelas operações de logar e deslogar usuários var signInResultado = await SignInManager.PasswordSignInAsync( usuario.UserName, /*nome do usuario*/ modelo.Senha, /*senha vinda do formulario*/ isPersistent : modelo.ContinuarLogado, /*habilita o 'continuar logado'*/ shouldLockout : true); /*habilita o 'lockout' se o usuario fizer muitas tentativas de login*/ //resultado da tentativa de login switch (signInResultado) { //se tiver sucesso no login case SignInStatus.Success: if (usuario.EmailConfirmed) { return(RedirectToAction("Index", "Home")); } else { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); /*desloga o usuario*/ ModelState.AddModelError("", "Por favor, confirme o seu email antes do primeiro acesso!"); /*escreve na tela*/ } break; //se usuario acertou a senha após varias tentativas erradas case SignInStatus.LockedOut: var senhaCorreta = await UserManager.CheckPasswordAsync(usuario, modelo.Senha); if (senhaCorreta) { ModelState.AddModelError("", "Sua conta está bloqueada temporariamente! Tente novamente daqui a 15 minutos!"); /*escreve na tela*/ } else { return(SenhaOuUsuariosInvalidos()); } break; default: return(SenhaOuUsuariosInvalidos()); } } //algo errado aconteceu return(View(modelo)); }
public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { var usuario = await UserManager.FindByEmailAsync(modelo.Email); if (usuario == null) { return(SenhaOuUsuarioInvalidos()); } var signInResultado = await SignInManager.PasswordSignInAsync( usuario.UserName, modelo.Senha, isPersistent : modelo.ContinuarLogado, shouldLockout : true); switch (signInResultado) { case SignInStatus.Success: if (!usuario.EmailConfirmed) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); return(View("AguardandoConfirmacao")); } return(RedirectToAction("Index", "Home")); case SignInStatus.RequiresVerification: return(RedirectToAction("VerificacaoDoisFatores")); case SignInStatus.LockedOut: var senhaCorreta = await UserManager.CheckPasswordAsync( usuario, modelo.Senha); if (senhaCorreta) { ModelState.AddModelError("", "A conta está bloqueada!"); } else { return(SenhaOuUsuarioInvalidos()); } break; default: return(SenhaOuUsuarioInvalidos()); } } // Algo de errado aconteceu return(View(modelo)); }
public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { var usuario = await UserManager.FindByEmailAsync(modelo.Email); if (usuario == null) { return(SenhaOuUsuarioInvalidos()); } if (usuario != null) { var signResultado = await SignInManager.PasswordSignInAsync(usuario.UserName, modelo.Senha, isPersistent : modelo.ContinuarLogado, shouldLockout : true); switch (signResultado) { case SignInStatus.Success: // caso email nao tenha sido confirmado, usuario nao acessa aplicacao if (!usuario.EmailConfirmed) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); return(RedirectToAction("AguardandoConfirmacao")); } // caso confirmado usuario acessa normalmente return(RedirectToAction("Index", "Home")); case SignInStatus.LockedOut: // verificamos a senha nesse ponto apenas para informar ao usuário dono da conta // que sua conta esta bloqueada e para o demais (invasor tentando acesso) irei // retornar apenas a mensagem default para nao dar pistas de que o usuario exite // e esta apenas bloqueado. var senhaCorreta = await UserManager.CheckPasswordAsync(usuario, modelo.Senha); if (senhaCorreta) { ModelState.AddModelError("", "A conta esta bloqueada !"); } else { return(SenhaOuUsuarioInvalidos()); } break; default: return(SenhaOuUsuarioInvalidos()); } } } return(View(modelo)); }
public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { var usuario = await UserManager.FindByEmailAsync(modelo.Email); if (usuario == null) { return(SenhaOuUsuarioInvalidos()); } var signInResultado = await SignInManager.PasswordSignInAsync( usuario.UserName, modelo.Senha, isPersistent : modelo.ContinuarLogado, shouldLockout : true ); // O argumento isPersistent indica se o cookie deve permanecer no navegador após o usuário fechar o navegador // O argumento shouldLockout indica se devemos bloquear o usuário de tentar se autenticar após determinado número de tentativas falhas switch (signInResultado) { case SignInStatus.Success: if (!usuario.EmailConfirmed) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); return(View("AguardandoConfirmacao")); } return(RedirectToAction("Index", "Home")); case SignInStatus.LockedOut: var senhaCorreta = await UserManager.CheckPasswordAsync(usuario, modelo.Senha); if (senhaCorreta) { ModelState.AddModelError("", "A conta está bloqueada!"); break; } else { return(SenhaOuUsuarioInvalidos()); } default: return(SenhaOuUsuarioInvalidos()); } } return(View(modelo)); }
public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { var usuario = await UserManager.FindByEmailAsync(modelo.Email); if (usuario == null) { return(SenhaOuUsuarioInvalidos("Credenciais inválidas!")); } if (!usuario.EmailConfirmed) { return(View("AguardandoConfirmacao")); } var resultadoSignIn = await SignInManager.PasswordSignInAsync( usuario.UserName, modelo.Senha, isPersistent : modelo.ContinuarLogado, shouldLockout : true); switch (resultadoSignIn) { case SignInStatus.Success: return(RedirectToAction("Index", "Home")); case SignInStatus.LockedOut: var senhaCorreta = await UserManager.CheckPasswordAsync(usuario, modelo.Senha); if (senhaCorreta) { ModelState.AddModelError("", "Você errou a senha mais de 3 vezes!"); ModelState.AddModelError("", "A conta está bloqueada! Aguarde 5 minutos e tente novamente."); } else { return(SenhaOuUsuarioInvalidos("Credenciais inválidas!")); } break; default: return(SenhaOuUsuarioInvalidos("Credenciais inválidas!")); } } return(View(modelo)); }
public async Task <ActionResult> Login(ContaLoginViewModel modelo) { if (ModelState.IsValid) { var usuario = await UserManager.FindByEmailAsync(modelo.Email); if (usuario == null) { SenhaOuUsuarioInvalidos(); } var singInResultado = await SignInManager.PasswordSignInAsync( usuario.UserName, modelo.Senha, modelo.ContinuarLogado, true); switch (singInResultado) { case SignInStatus.Success: if (!usuario.EmailConfirmed) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); return(View("AguardandoConfirmacao")); } return(RedirectToAction("Index", "Home")); case SignInStatus.LockedOut: var senhaCorreta = await UserManager.CheckPasswordAsync(usuario, modelo.Senha); if (senhaCorreta) { ModelState.AddModelError(" ", "A conta foi bloqueada, pois atingiu o limite de tentativas, por favor tente novamente após 5 minutos"); } else { return(SenhaOuUsuarioInvalidos()); } break; default: return(SenhaOuUsuarioInvalidos()); } } return(View(modelo)); }