Ejemplo n.º 1
0
 public async Task <ActionResult> Login(ContaLoginViewModel modelo)
 {
     if (ModelState.IsValid)
     {
     }
     return(View(modelo));
 }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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));
        }