public async Task <IActionResult> Login(UsuarioParaLoginDto usuarioParaLoginDto) { var usuarioDB = await _repo.Login(usuarioParaLoginDto.nombreUsuario.ToLower(), usuarioParaLoginDto.password); if (usuarioDB == null) { return(Unauthorized()); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, usuarioDB.id.ToString()), new Claim(ClaimTypes.Name, usuarioDB.nombreUsuario) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var descriptorToken = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds, }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(descriptorToken); return(Ok(new { token = tokenHandler.WriteToken(token) })); }
public bool Autentica(UsuarioParaLoginDto usuario) { var usuarioEncontrado = _contexto.Usuarios.FirstOrDefault(u => u.Email == usuario.Email); if (usuarioEncontrado == null) { return(false); } if (Hash(usuario.Senha) != usuarioEncontrado.Senha) { return(false); } return(true); }
public IActionResult Logar([FromBody] UsuarioParaLoginDto usuario) { if (!_repository.Autentica(usuario)) { var erro = new { Mensagem = "Usuário ou senha incorretos", Status = "400" }; return(BadRequest(erro)); } var claims = new[] { new Claim(ClaimTypes.Email, usuario.Email) }; var chave = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(_configuration["ChaveDeSeguranca"])); var credenciais = new SigningCredentials(chave, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: "DesafioApi", audience: "Consumidor", claims: claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: credenciais ); return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) })); }