2026-06-30 10:47:21 +08:00

247 lines
7.3 KiB
Protocol Buffer
Raw Permalink 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.

syntax = "proto3";
package hyapp.user.v1;
import "proto/user/v1/user.proto";
option go_package = "hyapp.local/api/proto/user/v1;userv1";
// LoginPasswordRequest 使用当前 display_user_id 和已设置密码登录。
message LoginPasswordRequest {
RequestMeta meta = 1;
string display_user_id = 2;
string password = 3;
}
// LoginThirdPartyRequest 使用三方凭证登录或注册。
message LoginThirdPartyRequest {
RequestMeta meta = 1;
string provider = 2;
string credential = 3;
string username = 4;
string gender = 5;
string country = 6;
string invite_code = 7;
string device_id = 8;
string device = 9;
string avatar = 10;
string birth = 11;
string app_version = 12;
string source = 13;
string platform = 14;
string language = 15;
string os_version = 16;
string build_number = 17;
string timezone = 18;
string install_channel = 19;
string campaign = 20;
}
// RegisterThirdPartyRequest 是资料页完成时使用的三方注册入口。
// 它不会先返回 profile_required 登录态,而是在服务端一次性校验 credential、写用户资料并签发完整 session。
message RegisterThirdPartyRequest {
RequestMeta meta = 1;
string provider = 2;
string credential = 3;
string device_id = 4;
string username = 5;
string avatar = 6;
string gender = 7;
string country = 8;
string invite_code = 9;
string device = 10;
string os_version = 11;
string birth = 12;
string app_version = 13;
string build_number = 14;
string source = 15;
string install_channel = 16;
string campaign = 17;
string platform = 18;
string language = 19;
string timezone = 20;
}
// CheckThirdPartyRegisteredRequest 只校验三方凭证并判断是否已有完整注册用户。
message CheckThirdPartyRegisteredRequest {
RequestMeta meta = 1;
string provider = 2;
string credential = 3;
}
message CheckThirdPartyRegisteredResponse {
bool registered = 1;
}
// AuthResponse 返回标准认证令牌。
message AuthResponse {
AuthToken token = 1;
bool is_new_user = 2;
bool profile_completed = 3;
string onboarding_status = 4;
}
// SetPasswordRequest 为已经三方登录的用户首次设置密码。
message SetPasswordRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string password = 3;
}
// SetPasswordResponse 返回密码是否已经成功设置。
message SetPasswordResponse {
bool password_set = 1;
}
// QuickCreateAccountRequest 为后台快速创建完整资料账号source=game_robot 时账号不可登录。
message QuickCreateAccountRequest {
RequestMeta meta = 1;
string password = 2;
string username = 3;
string avatar = 4;
string gender = 5;
string country = 6;
string invite_code = 7;
string device_id = 8;
string device = 9;
string os_version = 10;
string birth = 11;
string app_version = 12;
string build_number = 13;
string source = 14;
string install_channel = 15;
string campaign = 16;
string platform = 17;
string language = 18;
string timezone = 19;
}
// QuickCreateAccountResponse 返回新账号身份普通账号含登录态source=game_robot 时 token 只含 user_id/display_user_id。
message QuickCreateAccountResponse {
AuthToken token = 1;
bool password_set = 2;
}
// RefreshTokenRequest 使用 refresh token 换取新 token。
message RefreshTokenRequest {
RequestMeta meta = 1;
string refresh_token = 2;
}
// RefreshTokenResponse 返回轮换后的令牌。
message RefreshTokenResponse {
AuthToken token = 1;
}
// LogoutRequest 失效指定会话或 refresh token。
message LogoutRequest {
RequestMeta meta = 1;
string session_id = 2;
string refresh_token = 3;
}
// LogoutResponse 返回会话是否被失效。
message LogoutResponse {
bool revoked = 1;
}
// RecordLoginBlockedRequest 记录 gateway 入口快拦拒绝的登录审计。
message RecordLoginBlockedRequest {
RequestMeta meta = 1;
string channel = 2;
string platform = 3;
string language = 4;
string timezone = 5;
string block_reason = 6;
}
// RecordLoginBlockedResponse 返回审计写入是否成功。
message RecordLoginBlockedResponse {
bool recorded = 1;
}
// CheckLoginRiskIPWhitelistRequest 查询入口 IP 是否命中后台白名单。
message CheckLoginRiskIPWhitelistRequest {
RequestMeta meta = 1;
string client_ip = 2;
}
// CheckLoginRiskIPWhitelistResponse 返回入口 IP 是否跳过登录地区屏蔽。
message CheckLoginRiskIPWhitelistResponse {
bool whitelisted = 1;
}
// RefreshLoginRiskWhitelistCacheRequest 要求 user-service 从 MySQL 重建登录风控白名单缓存。
message RefreshLoginRiskWhitelistCacheRequest {
RequestMeta meta = 1;
}
// RefreshLoginRiskWhitelistCacheResponse 返回本次刷新后的白名单规模,便于后台保存后确认缓存已更新。
message RefreshLoginRiskWhitelistCacheResponse {
bool refreshed = 1;
int32 ip_whitelist_count = 2;
int32 user_whitelist_count = 3;
int64 user_cache_expires_at_ms = 4;
}
// RegisterRiskConfig 是注册链路读取的风控配置。
message RegisterRiskConfig {
string app_code = 1;
int32 max_accounts_per_device = 2;
int64 updated_at_ms = 3;
int64 updated_by_admin_id = 4;
}
// GetRegisterRiskConfigRequest 查询当前 App 的注册风控配置。
message GetRegisterRiskConfigRequest {
RequestMeta meta = 1;
}
message GetRegisterRiskConfigResponse {
RegisterRiskConfig config = 1;
}
// UpdateRegisterRiskConfigRequest 由后台保存当前 App 的注册风控配置。
message UpdateRegisterRiskConfigRequest {
RequestMeta meta = 1;
int32 max_accounts_per_device = 2;
int64 operator_admin_id = 3;
}
message UpdateRegisterRiskConfigResponse {
RegisterRiskConfig config = 1;
}
// AppHeartbeatRequest 刷新当前登录会话的 App 在线心跳。
message AppHeartbeatRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string session_id = 3;
}
// AppHeartbeatResponse 返回本次会话心跳写入时间,并在当前会话仍有效时顺手重签 access token。
message AppHeartbeatResponse {
bool accepted = 1;
int64 heartbeat_at_ms = 2;
int64 server_time_ms = 3;
AuthToken token = 4;
}
// AuthService 承载登录注册和 token 生命周期能力。
service AuthService {
rpc LoginPassword(LoginPasswordRequest) returns (AuthResponse);
rpc LoginThirdParty(LoginThirdPartyRequest) returns (AuthResponse);
rpc RegisterThirdParty(RegisterThirdPartyRequest) returns (AuthResponse);
rpc CheckThirdPartyRegistered(CheckThirdPartyRegisteredRequest) returns (CheckThirdPartyRegisteredResponse);
rpc SetPassword(SetPasswordRequest) returns (SetPasswordResponse);
rpc QuickCreateAccount(QuickCreateAccountRequest) returns (QuickCreateAccountResponse);
rpc RefreshToken(RefreshTokenRequest) returns (RefreshTokenResponse);
rpc Logout(LogoutRequest) returns (LogoutResponse);
rpc RecordLoginBlocked(RecordLoginBlockedRequest) returns (RecordLoginBlockedResponse);
rpc CheckLoginRiskIPWhitelist(CheckLoginRiskIPWhitelistRequest) returns (CheckLoginRiskIPWhitelistResponse);
rpc RefreshLoginRiskWhitelistCache(RefreshLoginRiskWhitelistCacheRequest) returns (RefreshLoginRiskWhitelistCacheResponse);
rpc GetRegisterRiskConfig(GetRegisterRiskConfigRequest) returns (GetRegisterRiskConfigResponse);
rpc UpdateRegisterRiskConfig(UpdateRegisterRiskConfigRequest) returns (UpdateRegisterRiskConfigResponse);
rpc AppHeartbeat(AppHeartbeatRequest) returns (AppHeartbeatResponse);
}