14-16 Mar 2026
Logica do Sistema

Seeds, Permissoes e Configuracao

Secao 11

Permissoes Definidas

Arquivo: cargo_fleet.Application.Contracts/Permissions/cargo_fleetPermissions.cs

GrupoPermissoes
cargo_fleet.Dashboard.Host, .Tenant
cargo_fleet.Metricas.Host, .Tenant
cargo_fleet.Rotas.Default, .Edit, .Create, .Delete
cargo_fleet.Ofertas.Default, .Edit, .Create, .Delete
cargo_fleet.GalileuCredentials.Default, .Edit, .Create, .Delete
cargo_fleet.OfertaRecords.Default, .Edit, .Create, .Delete
cargo_fleet.ApiStatuses.Default, .Edit, .Create, .Delete
cargo_fleet.WhatsAppContacts.Default, .Edit, .Create, .Delete

Ausente: Nao existe permissao especifica para CotarOferta ou AtualizarPreco — operacoes financeiras cobertas apenas por .Default (SEC2-07, SEC2-11).


Politica de Senha de Tenant

Arquivo: cargo_fleet.Application/EventHandlers/TenantUserPasswordPolicyHandler.cs

  • Ativado na criacao de usuario.
  • Se UserName.Contains("admin") (case-sensitive): seta ShouldChangePasswordOnNextLogin = true.
  • Incoerencia: comparacao case-sensitive (ADMIN nao e afetado — SEC2-17).

DbContext — Mapeamentos

Arquivo: cargo_fleet.EntityFrameworkCore/EntityFrameworkCore/cargo_fleetDbContext.cs

DbSets: WhatsAppContacts, ApiStatuses, OfertaRecords, GalileuCredentials, Ofertas, Rotas, Notifications, DeviceTokens, SeedExecutions, Cidades.

Mapeamentos relevantes:

  • GalileuCredential mapeado duas vezes (linhas 193-201 e 212-220) — P-12.
  • ApiStatus mapeado duas vezes (linhas 203-210 e 222-229) — P-12.
  • OfertaRecord tem OnDelete(DeleteBehavior.NoAction) para FK de Oferta — sem cascade delete.
  • Rota tem indices para campos de carga adicional e geograficos, mas sem indice composto (Origem, Destino, Carga, Status).