From e86bd0a570677076161cdd13bd3fe56598f35fb4 Mon Sep 17 00:00:00 2001 From: NANDO9322 Date: Fri, 6 Feb 2026 11:34:39 -0300 Subject: [PATCH] fix:(equipe) ajustado cadastro por regiao no acesso correspondente --- backend/internal/auth/handler.go | 10 +++++++--- backend/internal/auth/service.go | 24 +++++++++++++++++++---- frontend/components/ProfessionalModal.tsx | 1 + 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/backend/internal/auth/handler.go b/backend/internal/auth/handler.go index c317999..88f46a1 100644 --- a/backend/internal/auth/handler.go +++ b/backend/internal/auth/handler.go @@ -61,6 +61,7 @@ type registerRequest struct { Role string `json:"role" binding:"required"` EmpresaID string `json:"empresa_id"` TipoProfissional string `json:"tipo_profissional"` // New field + Regiao string `json:"regiao"` // Optional: for AdminCreateUser override } // Register godoc @@ -513,9 +514,12 @@ func (h *Handler) AdminCreateUser(c *gin.Context) { // Just reuse the request struct but call AdminCreateUser service regiao := c.GetString("regiao") - // If Admin doesn't specify region in header? - // Maybe Admin API should accept region in body? - // For now use header context. + + // If Admin explicitly sends regiao in body, use it (override context) + if req.Regiao != "" { + regiao = req.Regiao + } + if regiao == "" { // Fallback or Error? Admin creation usually implies target region. // Let's assume header is present or default. diff --git a/backend/internal/auth/service.go b/backend/internal/auth/service.go index 9a6c7d1..aa96911 100644 --- a/backend/internal/auth/service.go +++ b/backend/internal/auth/service.go @@ -235,13 +235,29 @@ func (s *Service) AdminCreateUser(ctx context.Context, email, senha, role, nome, return nil, err } - if ativo { - // Approve user immediately - err = s.ApproveUser(ctx, uuid.UUID(user.ID.Bytes).String()) + // Update Regions if provided + if regiao != "" { + err = s.queries.UpdateUsuarioRegions(ctx, generated.UpdateUsuarioRegionsParams{ + ID: pgtype.UUID{Bytes: user.ID.Bytes, Valid: true}, + RegioesPermitidas: []string{regiao}, + }) if err != nil { + _ = s.queries.DeleteUsuario(ctx, user.ID) + return nil, err + } + // Update the user struct in memory too (important for the return value?) + // user.RegioesPermitidas = []string{regiao} // Generated struct might differ, but return value is pointer to user. + // Since we return &user, and user is local struct from CreateUsuario, it has empty RegioesPermitidas. + // It's better to manually updating it if downstream depends on it, but usually ID/Email is enough. + } + + if ativo { + // Approve user immediately (already active=true by default in DB? No, default false) + err = s.ApproveUser(ctx, uuid.UUID(user.ID.Bytes).String()) + if err != nil { + _ = s.queries.DeleteUsuario(ctx, user.ID) return nil, err } - // Refresh user object to reflect changes if needed, but ID and Email are same. user.Ativo = true } diff --git a/frontend/components/ProfessionalModal.tsx b/frontend/components/ProfessionalModal.tsx index b4143ea..dbf2848 100644 --- a/frontend/components/ProfessionalModal.tsx +++ b/frontend/components/ProfessionalModal.tsx @@ -328,6 +328,7 @@ export const ProfessionalModal: React.FC = ({ role: roles.find(r => r.id === formData.funcao_profissional_id)?.nome.toUpperCase().includes("PESQUISA") ? "RESEARCHER" : "PHOTOGRAPHER", tipo_profissional: roles.find(r => r.id === formData.funcao_profissional_id)?.nome || "", ativo: true, + regiao: formData.regiao, // Pass selected region to creating user }, token); if (createRes.error) {