Exemplo n.º 1
0
        public IActionResult Login([FromBody] LoginDTO usuario)
        {
            try
            {
                var user = _database.Clientes.First(credenciais => credenciais.Email == usuario.Email);
                if (user != null)
                {
                    if (user.Senha == usuario.CriarHash(usuario.Senha))
                    {
                        string chaveDeSeguranca  = "chave_seguranca_desafio_apiErik";
                        var    chaveSimetrica    = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(chaveDeSeguranca));
                        var    credenciaisAcesso = new SigningCredentials(chaveSimetrica, SecurityAlgorithms.HmacSha256Signature);

                        var claims = new List <Claim>();
                        claims.Add(new Claim("email", usuario.Email));
                        claims.Add(new Claim(ClaimTypes.Role, "Admin"));

                        var JWT = new JwtSecurityToken(
                            issuer: "Api_Vendas",
                            expires: DateTime.Now.AddHours(1),
                            audience: "usuario_comum",
                            signingCredentials: credenciaisAcesso,
                            claims: claims
                            );
                        return(Ok(new JwtSecurityTokenHandler().WriteToken(JWT)));
                    }
                    else
                    {
                        Response.StatusCode = 401;
                        return(new ObjectResult(new{ msg = "Não autorizado" }));
                    }
                }
                else
                {
                    Response.StatusCode = 401;
                    return(new ObjectResult(new{ msg = "Não autorizado" }));
                }
            }
            catch (System.Exception)
            {
                Response.StatusCode = 401;
                return(new ObjectResult(new{ msg = "Não autorizado" }));
            }
        }