43 lines
1.7 KiB
Go
43 lines
1.7 KiB
Go
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
|
|
}
|