2026-04-30 02:30:32 +08:00

163 lines
6.1 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 认证领域模型,不包含密码明文或三方 SDK 细节。
package auth
// PasswordAccount 是用户主动设置密码后的密码身份记录。
// 登录入口使用 user.current_display_user_id 解析用户,不再维护独立账号命名空间。
type PasswordAccount struct {
// UserID 是密码身份绑定的系统用户 ID。
UserID int64
// DisplayUserID 是登录时解析出的当前展示短号快照,不作为独立唯一账号命名空间持久化。
DisplayUserID string
// PasswordHash 保存 bcrypt 等安全 hash永远不保存密码明文。
PasswordHash string
// HashAlg 标记 hash 算法,方便后续升级算法。
HashAlg string
// CreatedAtMs 是密码身份创建时间。
CreatedAtMs int64
// UpdatedAtMs 是密码身份更新时间。
UpdatedAtMs int64
}
// Token 表达 user-service 签发给 gateway 的登录结果。
// refresh token 原文只能出现在返回路径,持久化层必须保存 hash。
type Token struct {
// UserID 是系统内部不可变用户 ID。
UserID int64
// DisplayUserID 是当前展示短号,可能是默认短号或有效靓号。
DisplayUserID string
// DefaultDisplayUserID 是用户永久默认短号。
DefaultDisplayUserID string
// DisplayUserIDKind 表示当前展示号来源。
DisplayUserIDKind string
// DisplayUserIDExpiresAtMs 是当前靓号过期时间,默认短号为 0。
DisplayUserIDExpiresAtMs int64
// ProfileCompleted 是 access token 中用于 gateway profile gate 的资料完成快照。
ProfileCompleted bool
// OnboardingStatus 是 access token 中用于客户端跳转的注册状态。
OnboardingStatus string
// SessionID 是服务端 refresh session 标识。
SessionID string
// AccessToken 是返回给 gateway/client 的 JWT。
AccessToken string
// RefreshToken 是一次性轮换的 refresh token 原文,只能在响应中出现。
RefreshToken string
// ExpiresInSec 是 access token 有效期秒数。
ExpiresInSec int64
// TokenType 固定为 Bearer。
TokenType string
}
// Session 表达服务端会话和 refresh token 生命周期。
type Session struct {
// SessionID 是服务端会话主键。
SessionID string
// UserID 是会话所属用户。
UserID int64
// RefreshTokenHash 是 refresh token 的 hash持久化层不得保存原文。
RefreshTokenHash string
// DeviceID 绑定 refresh token 轮换设备,防止跨设备复用。
DeviceID string
// ExpiresAtMs 是 refresh session 过期时间。
ExpiresAtMs int64
// RevokedAtMs 非 0 表示会话已吊销。
RevokedAtMs int64
// CreatedAtMs 是会话创建时间。
CreatedAtMs int64
// UpdatedAtMs 是会话更新时间。
UpdatedAtMs int64
}
// ThirdPartyIdentity 是 provider + subject 到用户的稳定绑定。
type ThirdPartyIdentity struct {
// UserID 是绑定到的系统用户。
UserID int64
// Provider 是三方平台标识,例如 wechat。
Provider string
// ProviderSubject 是 provider 内稳定用户标识。
ProviderSubject string
// ProviderUnionID 是 provider 可选的跨应用联合 ID。
ProviderUnionID string
// CreatedAtMs 是绑定创建时间。
CreatedAtMs int64
// UpdatedAtMs 是绑定更新时间。
UpdatedAtMs int64
}
// LoginAudit 是登录注册链路的审计记录。
// 审计不能包含密码、三方 credential 或 refresh token 原文。
type LoginAudit struct {
// RequestID 是 gateway 透传的请求 ID用于串联审计。
RequestID string
// UserID 是已知用户 ID认证失败且未解析身份时可以为 0。
UserID int64
// LoginType 区分 password、third_party、refresh、logout 等链路。
LoginType string
// Provider 只在三方登录链路中有值。
Provider string
// Result 是 success 或 failed。
Result string
// FailureCode 保存稳定错误 reason不能写敏感凭证。
FailureCode string
// ClientIP 是 gateway 观察到的客户端 IP。
ClientIP string
// UserAgent 是客户端 UA。
UserAgent string
// CreatedAtMs 是审计写入时间。
CreatedAtMs int64
}
// ThirdPartyProfile 是三方凭证校验后的稳定身份结果。
type ThirdPartyProfile struct {
// ProviderSubject 是三方平台内稳定身份。
ProviderSubject string
// ProviderUnionID 是可选联合身份。
ProviderUnionID string
}
// ThirdPartyRegistration 是三方首次注册时写入用户主表的资料和来源快照。
// 它不包含三方 credential 原文credential 只在 verifier 中短暂使用。
type ThirdPartyRegistration struct {
// Username 是客户端提交的展示名。
Username string
// Gender 是客户端提交的性别原值,服务端不根据它推断身份。
Gender string
// Country 是客户端提交的国家码;服务端会归一并要求命中 active countries.country_code。
Country string
// RegionID 是 user-service 根据 Country 解析出的区域快照,不接受客户端直接提交。
RegionID int64
// InviteCode 是可选邀请码。
InviteCode string
// IP 是注册入口上报或 gateway 观察到的 IP。
IP string
// UserAgent 是 gateway 从 HTTP header 观察到的客户端 UA。
UserAgent string
// CountryByIP 是服务端根据入口 IP 或可信边缘地域信息得到的国家快照。
CountryByIP string
// DeviceID 是注册设备 ID同时用于 refresh session 绑定。
DeviceID string
// Device 是客户端上报的设备型号或描述。
Device string
// OSVersion 是客户端系统版本。
OSVersion string
// Avatar 是头像 HTTP(S) URL。
Avatar string
// BirthDate 使用 yyyy-mm-dd 保存生日,不携带时区。
BirthDate string
// AppVersion 是注册客户端版本。
AppVersion string
// BuildNumber 是注册客户端构建号,比 app_version 更适合定位精确包。
BuildNumber string
// Source 是注册来源渠道。
Source string
// InstallChannel 是安装渠道,例如 play_store 或 app_store。
InstallChannel string
// Campaign 是投放活动标识。
Campaign string
// Platform 是客户端平台,当前支持 android 或 ios。
Platform string
// Language 是客户端语言偏好。
Language string
// Timezone 是客户端 IANA 时区,例如 America/Los_Angeles。
Timezone string
}