package domain import "github.com/golang-jwt/jwt/v5" // UserType representa os diferentes tipos de usuários do sistema type UserType string const ( UserTypeAgency UserType = "agency_user" // Usuários das agências (admin, colaborador) UserTypeCustomer UserType = "customer" // Clientes do CRM // SUPERADMIN usa endpoint próprio /api/admin/*, não usa autenticação unificada ) // UnifiedClaims representa as claims do JWT unificado type UnifiedClaims struct { UserID string `json:"user_id"` // ID do usuário (user.id ou customer.id) UserType UserType `json:"user_type"` // Tipo de usuário TenantID string `json:"tenant_id,omitempty"` // ID do tenant (agência) Email string `json:"email"` // Email do usuário Role string `json:"role,omitempty"` // Role (para agency_user: ADMIN_AGENCIA, CLIENTE) AgencyRole string `json:"agency_role,omitempty"` // Agency role (owner ou collaborator) jwt.RegisteredClaims } // UnifiedLoginRequest representa uma requisição de login unificada type UnifiedLoginRequest struct { Email string `json:"email"` Password string `json:"password"` } // UnifiedLoginResponse representa a resposta de login unificada type UnifiedLoginResponse struct { Token string `json:"token"` UserType UserType `json:"user_type"` UserID string `json:"user_id"` Email string `json:"email"` Name string `json:"name"` Role string `json:"role,omitempty"` // Apenas para agency_user AgencyRole string `json:"agency_role,omitempty"` // owner ou collaborator TenantID string `json:"tenant_id,omitempty"` // ID do tenant Subdomain string `json:"subdomain,omitempty"` // Subdomínio da agência }