Executando verificação de segurança...
1

Multi Tenant APP

Ola pessoal tudo bem ? Estou construindo uma aplicacao e me deparei com um "problema".

Estou criando uma aplicacao multi tenant, ja implementei algo no meu trabalho, porem os nossos servicos estavam em um cluster dentro de um kubernetes, e de acordo com o usuario logado eu pego o tenatnId e carrego o DB ( Diferentes DB Connections ). Porem no caso agora estava querendo implementar multitenant com Prisma Client Extension - Row Level Security em um simples DB .

https://www.prisma.io/blog/client-extensions-preview-8t3w27xkrxxn#using-prisma-client-extensions

https://github.com/prisma/prisma-client-extensions/blob/main/row-level-security/script.ts

https://aws.amazon.com/blogs/database/multi-tenant-data-isolation-with-postgresql-row-level-security/

Na aplicacao da empresa nos estamos usando o mesmo dominio, entao cada empresa tem seu tenant DB e quando logado encontra o tenant da empresa e segue em frente. Neste caso em que estou trabalhando pretendemos usar Vercel, com subdominios. Estava pensando em pegar o host de acordo com o dominio que chega na request e verificar com o tenantId do usuario, algo do tipo:

filipe.tabnews.com.br => tenant:filipe

filipejs.tabnews.com.br/login => host => filipejs 

const credentials {
 email: filipe@telo.com.vc,
 password: filipeS2phpDead,  
}
const user = await prisma.$extends(bypassRLS()).user.findFirstOrThrow({
 ... prisma query object here
});

... check current host with user tenant

const companyPrisma = prisma.$extends(forCompany(user.companyId));

... continue request

Alguem implementou algo assim ? Esse sria um caminho correto ?

Links relacionados:
https://aws.amazon.com/blogs/database/multi-tenant-data-isolation-with-postgresql-row-level-security/

https://github.com/prisma/prisma-client-extensions/tree/main/row-level-security

https://www.prisma.io/blog/client-extensions-preview-8t3w27xkrxxn#example-row-level-security

Carregando publicação patrocinada...