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); }
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"); }
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)); }
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)); }
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 })); }
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)); }
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); }