public object Post( [FromBody] AccessCredentials credenciais, [FromServices] UsersDAO usersDAO, [FromServices] SigningConfigurations signingConfigurations, [FromServices] TokenConfigurations tokenConfigurations) { bool credenciaisValidas = false; if (credenciais != null && !String.IsNullOrWhiteSpace(credenciais.UserID)) { if (credenciais.GrantType == "password") { var usuarioBase = usersDAO.Find(credenciais.UserID); credenciaisValidas = (usuarioBase != null && credenciais.UserID == usuarioBase.UserID && credenciais.AccessKey == usuarioBase.AccessKey); } else if (credenciais.GrantType == "refresh_token") { if (!String.IsNullOrWhiteSpace(credenciais.RefreshToken)) { var usuarioBase = usersDAO.FindByToken(credenciais.RefreshToken); credenciaisValidas = (usuarioBase != null && credenciais.UserID == usuarioBase.UserID && credenciais.RefreshToken == usuarioBase.RefreshToken); } } } if (credenciaisValidas) { return(GenerateToken( credenciais.UserID, signingConfigurations, tokenConfigurations, usersDAO.Find(credenciais.UserID).Roles, usersDAO)); } else { return(new { authenticated = false, message = "Falha ao autenticar" }); } }