twofactor

package
v0.0.0-...-3056464 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConsumeBackupCode

func ConsumeBackupCode(code string, backupCodes []string) []string

ConsumeBackupCode remove um código de backup usado

func FormatSecret

func FormatSecret(secret string) string

FormatSecret formata o segredo para exibição (grupos de 4 caracteres)

func GenerateBackupCodes

func GenerateBackupCodes(count int) ([]string, error)

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

func GenerateSecureSecret() (string, error)

GenerateSecureSecret gera um segredo aleatório seguro

func GetCurrentUserCode

func GetCurrentUserCode(secret string) (string, error)

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

func ValidateCode(secret string, code string) bool

ValidateCode valida um código TOTP

func ValidateCodeWithDrift

func ValidateCodeWithDrift(secret string, code string, periods uint) bool

ValidateCodeWithDrift valida código com janela de tempo (para compensar clock drift)

func VerifyBackupCode

func VerifyBackupCode(code string, backupCodes []string) bool

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 NewHandler

func NewHandler(service *Service) *Handler

NewHandler cria um novo handler de 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

func (h *Handler) RegisterRoutes(mux *http.ServeMux)

RegisterRoutes registra as rotas de 2FA

func (*Handler) Setup2FA

func (h *Handler) Setup2FA(w http.ResponseWriter, r *http.Request)

Setup2FA inicia a configuração de 2FA

func (*Handler) SetupPage

func (h *Handler) SetupPage(w http.ResponseWriter, r *http.Request)

SetupPage exibe a página de configuração 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

func (s *Service) Disable2FA(userID, code string, useBackupCode bool) error

Disable2FA desativa o 2FA

func (*Service) Enable2FA

func (s *Service) Enable2FA(userID, code string) error

Enable2FA ativa o 2FA após validação do primeiro código

func (*Service) Get2FAStatus

func (s *Service) Get2FAStatus(userID string) (map[string]interface{}, error)

Get2FAStatus retorna o status do 2FA do usuário

func (*Service) GetQRCodeData

func (s *Service) GetQRCodeData(userID string) (map[string]string, error)

GetQRCodeData retorna dados do QR Code para frontend

func (*Service) RegenerateBackupCodes

func (s *Service) RegenerateBackupCodes(userID string) ([]string, error)

RegenerateBackupCodes gera novos códigos de backup

func (*Service) Setup2FA

func (s *Service) Setup2FA(userID, userEmail string) (*TotpSecret, error)

Setup2FA inicia o processo de configuração de 2FA

func (*Service) Verify2FA

func (s *Service) Verify2FA(userID, code string) error

Verify2FA verifica código 2FA durante login

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL