From 11fa5d64895df74c9e761fbfe6d7c068f230b799 Mon Sep 17 00:00:00 2001 From: NANDO9322 Date: Mon, 23 Feb 2026 19:18:09 -0300 Subject: [PATCH] =?UTF-8?q?fix(auth):=20sobrescrever=20regi=C3=A3o=20do=20?= =?UTF-8?q?cliente=20pela=20regi=C3=A3o=20da=20franquia=20Corrige=20o=20er?= =?UTF-8?q?ro=20onde=20clientes=20de=20empresas=20MG=20ficavam=20vinculado?= =?UTF-8?q?s=20ao=20estado=20de=20origem=20f=C3=ADsica=20(ex:=20SP)=20dura?= =?UTF-8?q?nte=20o=20registro=20via=20c=C3=B3digo.=20Agora,=20a=20regi?= =?UTF-8?q?=C3=A3o=20correta=20=C3=A9=20obtida=20via=20GetEmpresaByIDGloba?= =?UTF-8?q?l=20e=20aplicada=20antes=20da=20inicializa=C3=A7=C3=A3o=20das?= =?UTF-8?q?=20restri=C3=A7=C3=B5es=20de=20identidade.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/auth/service.go | 13 +++++++++++++ backend/internal/db/generated/empresas.sql.go | 16 ++++++++++++++++ backend/internal/db/queries/empresas.sql | 3 +++ 3 files changed, 32 insertions(+) diff --git a/backend/internal/auth/service.go b/backend/internal/auth/service.go index 06152e3..efffde9 100644 --- a/backend/internal/auth/service.go +++ b/backend/internal/auth/service.go @@ -99,6 +99,19 @@ func (s *Service) Register(ctx context.Context, email, senha, role, nome, telefo parsedEmpID, err := uuid.Parse(*empresaID) if err == nil { empID = pgtype.UUID{Bytes: parsedEmpID, Valid: true} + + // Override region with Company region to ensure client is bound to the correct franchise + empresa, errEmp := s.queries.GetEmpresaByIDGlobal(ctx, empID) + if errEmp == nil && empresa.Regiao.Valid && empresa.Regiao.String != "" { + fmt.Printf("[DEBUG] Overriding client region from '%s' to company region '%s'\n", regiao, empresa.Regiao.String) + regiao = empresa.Regiao.String + + // We also need to update the User regions binding in the DB since it might have been set to physical address state above + _ = s.queries.UpdateUsuarioRegions(ctx, generated.UpdateUsuarioRegionsParams{ + ID: pgtype.UUID{Bytes: user.ID.Bytes, Valid: true}, + RegioesPermitidas: []string{regiao}, + }) + } } } diff --git a/backend/internal/db/generated/empresas.sql.go b/backend/internal/db/generated/empresas.sql.go index e18ac21..c2281b4 100644 --- a/backend/internal/db/generated/empresas.sql.go +++ b/backend/internal/db/generated/empresas.sql.go @@ -67,6 +67,22 @@ func (q *Queries) GetEmpresaByID(ctx context.Context, arg GetEmpresaByIDParams) return i, err } +const getEmpresaByIDGlobal = `-- name: GetEmpresaByIDGlobal :one +SELECT id, nome, criado_em, regiao FROM empresas WHERE id = $1 +` + +func (q *Queries) GetEmpresaByIDGlobal(ctx context.Context, id pgtype.UUID) (Empresa, error) { + row := q.db.QueryRow(ctx, getEmpresaByIDGlobal, id) + var i Empresa + err := row.Scan( + &i.ID, + &i.Nome, + &i.CriadoEm, + &i.Regiao, + ) + return i, err +} + const getEmpresaByNome = `-- name: GetEmpresaByNome :one SELECT id, nome, criado_em, regiao FROM empresas WHERE nome = $1 AND regiao = $2 ` diff --git a/backend/internal/db/queries/empresas.sql b/backend/internal/db/queries/empresas.sql index 1af022a..aa02c14 100644 --- a/backend/internal/db/queries/empresas.sql +++ b/backend/internal/db/queries/empresas.sql @@ -7,6 +7,9 @@ SELECT * FROM empresas WHERE regiao = @regiao ORDER BY nome; -- name: GetEmpresaByID :one SELECT * FROM empresas WHERE id = $1 AND regiao = @regiao; +-- name: GetEmpresaByIDGlobal :one +SELECT * FROM empresas WHERE id = $1; + -- name: UpdateEmpresa :one UPDATE empresas SET nome = $2 WHERE id = $1 AND regiao = @regiao RETURNING *;