Oriente.Acessos.Client 0.1.0

Oriente.Acessos.Client

Liga um app .NET ao AcessoService, o registro central de acessos da Oriente Farma. É um data provider do Audit.NET: quem captura url, corpo, retorno, status, IP e usuário é o Audit.WebApi — este pacote só entrega isso ao serviço.

Você não escreve DTO, HttpClient nem filtro. Se estiver escrevendo, parou de usar o pacote.

Instalar

dotnet add package Oriente.Acessos.Client
dotnet add package Audit.WebApi.Core

Ligar

appsettings.json — a URL pode ficar aqui, a chave não:

{
  "Acessos": {
    "Url": "https://acessos.orientefarma.com.br",
    "TimeoutSegundos": 5
  }
}

A chave vai em env var (Acessos__ApiKey) ou user-secrets. Ela identifica a plataforma: idplataforma e plataforma saem dela, no servidor — o app não escolhe em nome de quem grava.

Program.cs:

builder.Services.AddAcessosAudit(builder.Configuration);

Para a falha de envio cair no log do app em vez de no Trace:

builder.Services.AddAcessosAudit(builder.Configuration,
    aoFalhar: ex => Log.Warning(ex, "Falha ao registrar acesso"));

Controller:

[AuditApi(IncludeHeaders = false, IncludeRequestBody = true, IncludeResponseBody = true)]
public class PedidosController : ControllerBase { }

Ou global, em AddControllers:

options.AddAuditFilter(cfg => cfg.LogAllActions().WithAuditEventType("{controller}/{action}"));

Marque o que não pode ser registrado

[HttpPost("login")]
public IActionResult Login([AuditIgnore] LoginRequest requisicao) { ... }

O serviço mascara senha, password, token, authorization, apiKey e secret antes de gravar — mas isso é rede de proteção, não desculpa. O que o [AuditIgnore] cobre nem sai da sua aplicação.

O que esperar

  • Não derruba nem segura o app. O envio sai do caminho da resposta e falha em silêncio, com timeout curto. Auditoria indisponível não vira app indisponível.
  • Perde evento se o serviço cair. Não há fila durável nesta versão. Se algum dia não puder perder nenhum registro, o lugar de resolver é aqui, não no app consumidor.
  • mac fica nulo em app web — navegador não entrega MAC. A coluna espera pelos apps que têm essa informação.
  • Requisição anônima é registrada como (anonimo). Login que falhou é o registro mais útil da trilha; descartar por falta de usuário jogaria fora justamente ele.

Como o time instala

O pacote vive no GitHub Packages da org, que não tem leitura anônima. Uma vez por máquina:

gh auth token   # ou um PAT clássico com escopo read:packages

dotnet nuget add source https://nuget.pkg.github.com/OrienteFarma/index.json \
  --name orientefarma --username <seu-usuario-github> --password <token> --store-password-in-clear-text

Depois disso, dotnet add package Oriente.Acessos.Client funciona normalmente.

Em CI, prefira um nuget.config no repo consumidor com a senha vindo de variável:

<configuration>
  <packageSources>
    <add key="orientefarma" value="https://nuget.pkg.github.com/OrienteFarma/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <orientefarma>
      <add key="Username" value="%GITHUB_ACTOR%" />
      <add key="ClearTextPassword" value="%GITHUB_TOKEN%" />
    </orientefarma>
  </packageSourceCredentials>
</configuration>

Como publicar uma versão nova

Suba <Version> no csproj — versão já publicada não pode ser sobrescrita — e:

cd backend
dotnet pack src/Oriente.Acessos.Client -c Release -o ./nupkg
dotnet nuget push ./nupkg/Oriente.Acessos.Client.<versao>.nupkg \
  --source https://nuget.pkg.github.com/OrienteFarma/index.json \
  --api-key <PAT com write:packages>

No packages depend on Oriente.Acessos.Client.

Version Downloads Last updated
0.1.0 0 08/20/2026