Documentation
¶
Index ¶
- func ConsumeBackupCode(code string, backupCodes []string) []string
- func FormatSecret(secret string) string
- func GenerateBackupCodes(count int) ([]string, error)
- func GenerateQRCode(secret *TotpSecret) (io.Reader, error)
- func GenerateQRCodeBase64(secret *TotpSecret) (string, error)
- func GenerateSecureSecret() (string, error)
- func GetCurrentUserCode(secret string) (string, error)
- func GetTimeRemaining() uint
- func ValidateCode(secret string, code string) bool
- func ValidateCodeWithDrift(secret string, code string, periods uint) bool
- func VerifyBackupCode(code string, backupCodes []string) bool
- type Handler
- func (h *Handler) Disable2FA(w http.ResponseWriter, r *http.Request)
- func (h *Handler) Enable2FA(w http.ResponseWriter, r *http.Request)
- func (h *Handler) GetStatus(w http.ResponseWriter, r *http.Request)
- func (h *Handler) RegenerateBackupCodes(w http.ResponseWriter, r *http.Request)
- func (h *Handler) RegisterRoutes(mux *http.ServeMux)
- func (h *Handler) Setup2FA(w http.ResponseWriter, r *http.Request)
- func (h *Handler) SetupPage(w http.ResponseWriter, r *http.Request)
- type Repository
- type Service
- func (s *Service) Disable2FA(userID, code string, useBackupCode bool) error
- func (s *Service) Enable2FA(userID, code string) error
- func (s *Service) Get2FAStatus(userID string) (map[string]interface{}, error)
- func (s *Service) GetQRCodeData(userID string) (map[string]string, error)
- func (s *Service) RegenerateBackupCodes(userID string) ([]string, error)
- func (s *Service) Setup2FA(userID, userEmail string) (*TotpSecret, error)
- func (s *Service) Verify2FA(userID, code string) error
- type TotpConfig
- type TotpSecret
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConsumeBackupCode ¶
ConsumeBackupCode remove um código de backup usado
func FormatSecret ¶
FormatSecret formata o segredo para exibição (grupos de 4 caracteres)
func GenerateBackupCodes ¶
GenerateBackupCodes gera códigos de backup one-time use
func GenerateQRCode ¶
func GenerateQRCode(secret *TotpSecret) (io.Reader, error)
GenerateQRCode gera um QR Code a partir do segredo TOTP
func GenerateQRCodeBase64 ¶
func GenerateQRCodeBase64(secret *TotpSecret) (string, error)
GenerateQRCodeBase64 gera QR Code em formato Base64 para embed em HTML
func GenerateSecureSecret ¶
GenerateSecureSecret gera um segredo aleatório seguro
func GetCurrentUserCode ¶
GetCurrentUserCode gera o código atual para um segredo (apenas para debug/testing)
func GetTimeRemaining ¶
func GetTimeRemaining() uint
GetTimeRemaining retorna segundos restantes até o próximo código
func ValidateCode ¶
ValidateCode valida um código TOTP
func ValidateCodeWithDrift ¶
ValidateCodeWithDrift valida código com janela de tempo (para compensar clock drift)
func VerifyBackupCode ¶
VerifyBackupCode verifica se um código de backup é válido
Types ¶
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler gerencia requisições HTTP para 2FA
func (*Handler) Disable2FA ¶
func (h *Handler) Disable2FA(w http.ResponseWriter, r *http.Request)
Disable2FA desativa o 2FA
func (*Handler) Enable2FA ¶
func (h *Handler) Enable2FA(w http.ResponseWriter, r *http.Request)
Enable2FA ativa o 2FA
func (*Handler) GetStatus ¶
func (h *Handler) GetStatus(w http.ResponseWriter, r *http.Request)
GetStatus retorna o status do 2FA
func (*Handler) RegenerateBackupCodes ¶
func (h *Handler) RegenerateBackupCodes(w http.ResponseWriter, r *http.Request)
RegenerateBackupCodes gera novos códigos de backup
func (*Handler) RegisterRoutes ¶
RegisterRoutes registra as rotas de 2FA
type Repository ¶
type Repository interface {
GetTOTPSecret(userID string) (*TotpSecret, error)
SaveTOTPSecret(userID string, secret *TotpSecret) error
GetBackupCodes(userID string) ([]string, error)
SaveBackupCodes(userID string, codes []string) error
Is2FAEnabled(userID string) (bool, error)
Enable2FA(userID string) error
Disable2FA(userID string) error
}
Repository define a interface para persistência de 2FA
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service gerencia 2FA/TOTP
func NewService ¶
func NewService(issuer string, repo Repository) *Service
NewService cria um novo serviço 2FA
func (*Service) Disable2FA ¶
Disable2FA desativa o 2FA
func (*Service) Get2FAStatus ¶
Get2FAStatus retorna o status do 2FA do usuário
func (*Service) GetQRCodeData ¶
GetQRCodeData retorna dados do QR Code para frontend
func (*Service) RegenerateBackupCodes ¶
RegenerateBackupCodes gera novos códigos de backup
type TotpConfig ¶
type TotpConfig struct {
Issuer string
AccountName string
Digits otp.Digits
Period uint
Algorithm otp.Algorithm
}
TotpConfig configura o gerador TOTP
func DefaultTotpConfig ¶
func DefaultTotpConfig(issuer, accountName string) TotpConfig
DefaultTotpConfig retorna configuração padrão compatível com Google Authenticator
type TotpSecret ¶
type TotpSecret struct {
Secret string `json:"secret"`
Issuer string `json:"issuer"`
AccountName string `json:"account_name"`
QRCodeURL string `json:"qr_code_url"`
Base32 string `json:"base32"`
CreatedAt time.Time `json:"created_at"`
}
TotpSecret representa um segredo TOTP
func GenerateSecret ¶
func GenerateSecret(config TotpConfig) (*TotpSecret, error)
GenerateSecret gera um novo segredo TOTP
func ParseQRCodeURL ¶
func ParseQRCodeURL(qrCodeURL string) (*TotpSecret, error)
ParseQRCodeURL extrai informações de uma URL de QR Code TOTP