public IActionResult Login([FromBody] LoginViewModel login) { MaisVagasContext ctx = new MaisVagasContext(); try { Usuario usuarioBuscado = _usuarioRepository.Login(login.Email, login.Senha); //Empresa empresaBuscada = ctx.Empresa.FirstOrDefault(e => e.IdUsuario == usuarioBuscado.IdUsuario); if (usuarioBuscado == null) { return(NotFound("E-mail ou senha inválidos!")); } var claims = new[] { new Claim(JwtRegisteredClaimNames.Email, usuarioBuscado.Email), new Claim(JwtRegisteredClaimNames.Jti, usuarioBuscado.IdUsuario.ToString()), new Claim(ClaimTypes.Role, usuarioBuscado.IdTipoUsuarioNavigation.Titulo.ToString()), //claim personalizada new Claim("Role", usuarioBuscado.IdTipoUsuarioNavigation.Titulo), new Claim("nomeUsuario", usuarioBuscado.Nome), //new Claim("id", empresaBuscada.IdEmpresa.ToString()) }; var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("MaisVagas-chave-autenticacao")); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: "Senai.MaisVagas.WebApi", audience: "Senai.MaisVagas.WebApi", claims: claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: creds ); return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) })); } catch (Exception error) { return(BadRequest(new { mensagem = "Não foi possível gerar o token", error })); } }