auth

package
v0.0.0-...-b8f26f3 Latest Latest
Warning

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

Go to latest
Published: Aug 17, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrResetTokenInvalid 重置令牌无效
	ErrResetTokenInvalid = errors.New("invalid or expired reset token")
	// ErrEmailNotConfigured 邮件未配置
	ErrEmailNotConfigured = errors.New("email service not configured")
)

DB 存储接口(在运行时注入)

Functions

func ConsumeResetToken

func ConsumeResetToken(token string) bool

ConsumeResetToken 消费重置令牌(验证后删除)

func ConsumeTmpToken

func ConsumeTmpToken(token string) bool

ConsumeTmpToken 消耗临时令牌(验证后删除,导出供外部使用)

func FormatBackupCode

func FormatBackupCode(code string) string

FormatBackupCode 格式化备份码显示

func GenerateQRCodeData

func GenerateQRCodeData(secret, username, issuer string) (string, error)

GenerateQRCodeData 生成 QR 码数据 注意:实际 QR 码图片生成在前端进行,这里只返回 URL

func GenerateResetToken

func GenerateResetToken(userID, email string) (string, string, error)

GenerateResetToken 生成密码重置令牌和验证码

func GenerateTOTPSecret

func GenerateTOTPSecret(username, issuer string) (string, error)

GenerateTOTPSecret 生成 TOTP 密钥

func GenerateTOTPURL

func GenerateTOTPURL(secret, username, issuer string) (string, error)

GenerateTOTPURL 生成 TOTP URL(用于 QR 码)

func GenerateToken

func GenerateToken(userID, username, role string) (string, error)

GenerateToken 生成 JWT token

func GetEmailConfig

func GetEmailConfig() *config.EmailConfig

GetEmailConfig 获取邮件配置(优先使用配置文件,否则回退到环境变量)

func HandleLogin

func HandleLogin(w http.ResponseWriter, r *http.Request)

HandleLogin 处理登录

func HandleRefresh

func HandleRefresh(w http.ResponseWriter, r *http.Request)

HandleRefresh 处理 token 刷新

func InitAdmin

func InitAdmin(db *storage.DB, username, password string) error

InitAdmin 初始化管理员用户

func InitDB

func InitDB(db *storage.DB)

InitDB 初始化数据库连接

func MaskEmail

func MaskEmail(email string) string

MaskEmail 脱敏邮箱地址

func Middleware

func Middleware(next http.HandlerFunc) http.HandlerFunc

Middleware 认证中间件

func OptionalMiddleware

func OptionalMiddleware(next http.HandlerFunc) http.HandlerFunc

OptionalMiddleware 可选认证中间件(不强制要求登录)

func RefreshToken

func RefreshToken(tokenString string) (string, error)

RefreshToken 刷新 token

func SecretFingerprint

func SecretFingerprint() string

SecretFingerprint 返回当前 secret 的指纹(用于诊断)

func SendPasswordResetEmail

func SendPasswordResetEmail(email, username, code, token string) error

SendPasswordResetEmail 发送密码重置邮件

func SetEmailConfig

func SetEmailConfig(cfg *config.EmailConfig)

SetEmailConfig 设置邮件配置

func SetExpiration

func SetExpiration(expiration time.Duration)

SetExpiration 设置 JWT token 过期时间

func SetSecret

func SetSecret(secret string)

SetSecret 设置 JWT 密钥

func ValidateTOTP

func ValidateTOTP(secret, code string) bool

ValidateTOTP 验证 TOTP 代码

func ValidateTmpToken

func ValidateTmpToken(token string) (string, bool)

ValidateTmpToken 验证临时令牌(导出供外部使用)

Types

type Claims

type Claims struct {
	UserID   string `json:"user_id"`
	Username string `json:"username"`
	Role     string `json:"role"`
	jwt.RegisteredClaims
}

Claims JWT 声明

func ValidateToken

func ValidateToken(tokenString string) (*Claims, error)

ValidateToken 验证 JWT token

type ForgotPasswordRequest

type ForgotPasswordRequest struct {
	Username string `json:"username"`
}

ForgotPasswordRequest 忘记密码请求

type ForgotPasswordResponse

type ForgotPasswordResponse struct {
	Email       string `json:"email"`        // 脱敏邮箱
	MaskedEmail string `json:"masked_email"` // 脱敏邮箱
	Message     string `json:"message"`
}

ForgotPasswordResponse 忘记密码响应

type LoginRequest

type LoginRequest struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

LoginRequest 登录请求

type LoginResponse

type LoginResponse struct {
	Token        string `json:"token,omitempty"`
	ExpiresAt    int64  `json:"expires_at,omitempty"`
	UserID       string `json:"user_id"`
	Username     string `json:"username"`
	Role         string `json:"role,omitempty"`
	RequiresTOTP bool   `json:"requires_totp"`
	TmpToken     string `json:"tmp_token,omitempty"`
}

LoginResponse 登录响应

type ResetPasswordRequest

type ResetPasswordRequest struct {
	Token       string `json:"token"`
	Code        string `json:"code"` // 可选,用于验证码验证
	NewPassword string `json:"new_password"`
}

ResetPasswordRequest 重置密码请求

type ResetTokenData

type ResetTokenData struct {
	UserID    string
	Email     string
	Code      string // 6位验证码
	ExpiresAt time.Time
}

ResetTokenData 重置令牌数据

func ValidateResetCode

func ValidateResetCode(token, code string) (*ResetTokenData, error)

ValidateResetCode 验证重置验证码

func ValidateResetToken

func ValidateResetToken(token string) (*ResetTokenData, error)

ValidateResetToken 验证重置令牌

type TmpTokenData

type TmpTokenData struct {
	UserID    string
	ExpiresAt time.Time
}

TmpTokenData 临时令牌数据

type UserInfo

type UserInfo struct {
	UserID   string
	Username string
	Role     string
}

UserInfo 用户信息

func GetUserFromContext

func GetUserFromContext(r *http.Request) (UserInfo, bool)

GetUserFromContext 从 context 获取用户信息

Jump to

Keyboard shortcuts

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