Skip to main content

RLS (Row Level Security) — o muro que seu banco precisa e que quase ninguém levanta

· 9 min read
Bruno Carneiro
Fundador da @TautornTech
Ilustração representando Row Level Security protegendo dados por linha no banco

Existe um tipo de bug que não trava o build, não aparece no log, não cai no Sentry, mas mata o teu produto do dia pra noite: o usuário A abrindo a aplicação e vendo — do nada — dados do usuário B. Transação, saldo, CPF, endereço, o que for. E o pior: em quase todos os projetos onde vi isso acontecer, o problema não era "um bug" no código. Era ausência total de RLS no banco.

Hoje quero falar de Row Level Security, que é literalmente o muro que separa o dado de um usuário do dado do outro — dentro da própria tabela.

Detectando imports circulares com Madge (e travando regressões no lint)

· 9 min read
Bruno Carneiro
Fundador da @TautornTech
Diagrama ilustrativo de um ciclo de imports entre módulos TypeScript

Quem já passou horas caçando um undefined no meio de um bundle ou um comportamento estranho em produção sabe como uma corrente de imports mal resolvida pode virar dor de cabeça. Um dos culpados frequentes é o import circular: o módulo A importa B, B importa C, e em algum lugar da cadeia alguém importa de novo o A — fechando um ciclo.

Isso é uma maravilha, o build funciona, o projeto roda local mas na hora de subir da pau! \o/

Eu já vi isso em projeto pequeno e em projeto grande; a diferença é só o tamanho do problema que você vai enfrentar. Da pra ver a dor de cabeça com o Madge e isso salva vida!

Pra travar o typescript é uma beleza circular import.