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 *;