Ejemplo n.º 1
0
        public async Task <Dominio.Servicos.Resposta <Modelos.Usuario> > Salvar(DTOs.NovoUsuario dadosUsuario)
        {
            var resposta = new Resposta <Modelos.Usuario>();
            var senha    = new Modelos.Senha();

            if (string.IsNullOrWhiteSpace(dadosUsuario.Nome))
            {
                resposta.Erro = new ErroAtributoEmBranco("nome");
            }

            else if (string.IsNullOrWhiteSpace(dadosUsuario.Login))
            {
                resposta.Erro = new ErroAtributoEmBranco("login");
            }

            else if (string.IsNullOrWhiteSpace(dadosUsuario.Senha))
            {
                resposta.Erro = new ErroAtributoEmBranco("senha");
            }

            else
            {
                var usuario = new Modelos.Usuario(dadosUsuario.Login, senha.GerarHash(dadosUsuario.Senha), dadosUsuario.Nome);

                usuario.Id = await _usuarios.Salvar(usuario);

                resposta.Resultado = usuario;
            }

            return(resposta);
        }
Ejemplo n.º 2
0
        public async Task Deve_Autenticar_Um_Usuario()
        {
            var usuario = new Modelos.Usuario(
                "usuario login",
                "pMt6WXGnAFrN1o13CIDRGw==.Bc8/fYrDFfyw576GfZnlEgnYIqZfszuKEErs2agPgRA=",
                "usuario nome")
            {
                Id = 1,
            };

            usuario.AdicionarToken(Guid.NewGuid().ToString());

            var dadosUsuario = new DTOs.NovoUsuario
            {
                Login = "******",
                Senha = "123456"
            };

            _usuarios.Setup(repositorio => repositorio.ObterPorLogin(It.IsAny <string>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.Autenticar(dadosUsuario);

            var usuarioEncontrado = resposta.Resultado;

            usuarioEncontrado.Id.Should().NotBe(0);
            usuarioEncontrado.Login.Should().Be("usuario login");
            usuarioEncontrado.Token.Should().NotBeNullOrWhiteSpace();
            usuarioEncontrado.Nome.Should().Be("usuario nome");
        }
Ejemplo n.º 3
0
        public async Task Deve_Retornar_Erro_Quando_Tentar_Autenticar_Um_Usuario_Inexistente()
        {
            var dadosUsuario = new DTOs.NovoUsuario
            {
                Login = "******",
                Senha = "123456"
            };

            var resposta = await _servico.Autenticar(dadosUsuario);

            resposta.Erro.Mensagem.Should().Be("Login inválido(a)!");
            resposta.Erro.StatusCode.Should().Be(400);
            resposta.Erro.GetType().Should().Be(typeof(ErroAtributoInvalido));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Login([FromForm] IFormCollection usuario)
        {
            var dadosUsuario = new DTOs.NovoUsuario
            {
                Login = usuario["login"],
                Senha = usuario["senha"]
            };

            var resposta = await _servico.Autenticar(dadosUsuario);

            if (resposta.TemErro())
            {
                return(StatusCode(resposta.Erro.StatusCode, new { resposta.Erro.Mensagem }));
            }

            return(Ok(resposta.Resultado));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Post([FromForm] IFormCollection usuario)
        {
            var dadosUsuario = new DTOs.NovoUsuario
            {
                Login = usuario["login"],
                Senha = usuario["senha"],
                Nome  = usuario["nome"]
            };

            var resposta = await _servico.Salvar(dadosUsuario);

            if (resposta.TemErro())
            {
                return(StatusCode(resposta.Erro.StatusCode, new { resposta.Erro.Mensagem }));
            }

            var id = resposta.Resultado.Id;

            return(Created($"/usuarios/{id}", new { Id = id }));
        }
Ejemplo n.º 6
0
        public async Task Deve_Retornar_Erro_Quando_Tentar_Autenticar_Um_Usuario_Com_Senha_Invalida()
        {
            var usuario = new Modelos.Usuario(
                "usuario login",
                "bHBlUVj1rFG48+Bd+4+yGA==.7KQGnYFMukLhkfSqhbfGhtqtqELUntz4AbGhrrqspLs=",
                "usuario nome");

            var dadosUsuario = new DTOs.NovoUsuario
            {
                Login = "******",
                Senha = "123456"
            };

            _usuarios.Setup(repositorio => repositorio.ObterPorLogin(It.IsAny <string>()))
            .Returns(Task.FromResult(usuario));

            var resposta = await _servico.Autenticar(dadosUsuario);

            resposta.Erro.Mensagem.Should().Be("Senha inválido(a)!");
            resposta.Erro.StatusCode.Should().Be(400);
            resposta.Erro.GetType().Should().Be(typeof(ErroAtributoInvalido));
        }
Ejemplo n.º 7
0
        public async Task <Dominio.Servicos.Resposta <DTOs.Usuario> > Autenticar(DTOs.NovoUsuario dadosUsuario)
        {
            var resposta = new Resposta <DTOs.Usuario>();
            var senha    = new Modelos.Senha();

            var usuario = await _usuarios.ObterPorLogin(dadosUsuario.Login);

            if (usuario == null)
            {
                resposta.Erro = new ErroAtributoInvalido("Login");
                return(resposta);
            }

            bool senhaEhValida = senha.Validar(usuario.Senha, dadosUsuario.Senha);

            if (senhaEhValida)
            {
                usuario.AdicionarToken(Guid.NewGuid().ToString());

                await _usuarios.Salvar(usuario);

                resposta.Resultado = new DTOs.Usuario
                {
                    Id    = usuario.Id,
                    Login = usuario.Login,
                    Token = usuario.Token,
                    Nome  = usuario.Nome
                };
            }

            else
            {
                resposta.Erro = new ErroAtributoInvalido("Senha");
            }

            return(resposta);
        }