Juarez Lustosa
Todos os projetos

Autorização baseada em perfis para uma plataforma de cobrança

Um modelo de permissões flexível o bastante para times financeiros definirem seus próprios papéis, construído como consultor para a Ordway.

Empresa
Ordway (via Codeminer42)
Papel
Consultor e desenvolvedor backend
Período
2019 — 2020
Stack
  • Ruby on Rails
  • React
  • PostgreSQL
  • Redis
  • Heroku

O problema

A Ordway é uma plataforma de cobrança e receita. Os times financeiros dos clientes precisavam de controle fino sobre quem podia ver faturas, editar planos ou executar pagamentos, e um conjunto fixo de papéis nunca era suficiente: cada cliente queria uma divisão um pouco diferente.

O que eu fiz

Desenhei e implementei o sistema de autorização de ponta a ponta, do modelo de dados às telas administrativas, e corrigi no caminho um conjunto de problemas de configuração de produção no Heroku.

Como resolvi

As permissões são declaradas uma vez, como pares de recurso e ação. Um perfil é um conjunto nomeado de permissões, e um usuário pode ter vários perfis. As verificações são resolvidas de um cache por requisição no Redis, para que as muitas checagens de uma página não batam no banco. A interface administrativa em React permite que um administrador do cliente componha perfis sem envolver engenharia.

O que foi difícil

Tornar um modelo flexível seguro. Perfis que se sobrepõem podem conceder mais do que o pretendido, então o sistema mostra as permissões efetivas de um usuário como a união dos perfis e sinaliza ações sensíveis que vêm de mais de um perfil.

O resultado

Os clientes puderam definir papéis que correspondiam aos próprios fluxos de aprovação, e os pedidos de suporte para “mudar o que este papel pode fazer” pararam de chegar à engenharia.

Onde conferir

Interno ao produto. O modelo está descrito acima.