2026-05-02 13:02:38 +08:00

45 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package auth 实现 user-service 的认证、三方登录、密码登录和 refresh session 用例。
package auth
import (
"context"
"hyapp/pkg/appcode"
authdomain "hyapp/services/user-service/internal/domain/auth"
)
// Meta 是 gateway 透传到 user-service 的审计元信息。
type Meta struct {
// AppCode 是 gateway 已解析的 App 租户键。
AppCode string
// RequestID 是 gateway 透传的请求 ID用于登录审计。
RequestID string
// ClientIP 是客户端 IP。
ClientIP string
// UserAgent 是客户端 UA。
UserAgent string
// CountryByIP 是 gateway 或可信边缘层根据入口 IP 得到的国家快照。
CountryByIP string
}
func (s *Service) audit(ctx context.Context, meta Meta, userID int64, loginType string, provider string, result string, failureCode string) {
if s.authRepository == nil {
// 没有 repository 时无法写审计,但不应让辅助审计路径触发 panic。
return
}
// 审计失败不影响登录主链路,所以这里有意忽略错误。
_ = s.authRepository.RecordLoginAudit(ctx, authdomain.LoginAudit{
AppCode: appcode.Normalize(meta.AppCode),
RequestID: meta.RequestID,
UserID: userID,
LoginType: loginType,
Provider: provider,
Result: result,
FailureCode: failureCode,
ClientIP: meta.ClientIP,
UserAgent: meta.UserAgent,
CreatedAtMs: s.now().UnixMilli(),
})
}