Пример #1
0
        public async Task <ActionResult> Login(ContaLoginViewModelo modelo)
        {
            if (!ModelState.IsValid)
            {
                return(View(modelo));
            }

            var usuario = await UserManager.FindByEmailAsync(modelo.Email);

            if (usuario == null)
            {
                return(SenhaOuEmailIncorreto(modelo));
            }

            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(VerificaEmailELogaUsuario(usuario));

            case SignInStatus.LockedOut:
                var senhaCorreta = await UserManager.CheckPasswordAsync(usuario, modelo.Senha);

                if (senhaCorreta)
                {
                    ModelState.AddModelError("", "Conta bloqueada!");
                    return(View("Login", modelo));
                }
                return(SenhaOuEmailIncorreto(modelo));

            default:
                return(SenhaOuEmailIncorreto(modelo));
            }
        }
Пример #2
0
 private ActionResult SenhaOuEmailIncorreto(ContaLoginViewModelo modelo)
 {
     ModelState.AddModelError("", "Senha ou email inválidos!");
     return(View("Login", modelo));
 }