78 lines
2.7 KiB
Go
78 lines
2.7 KiB
Go
package grpc
|
|
|
|
import (
|
|
userv1 "hyapp/api/proto/user/v1"
|
|
authdomain "hyapp/services/user-service/internal/domain/auth"
|
|
userdomain "hyapp/services/user-service/internal/domain/user"
|
|
authservice "hyapp/services/user-service/internal/service/auth"
|
|
)
|
|
|
|
// toProtoToken 把领域令牌转换为 protobuf 响应。
|
|
func toProtoToken(token authdomain.Token) *userv1.AuthToken {
|
|
return &userv1.AuthToken{
|
|
UserId: token.UserID,
|
|
DisplayUserId: token.DisplayUserID,
|
|
DefaultDisplayUserId: token.DefaultDisplayUserID,
|
|
DisplayUserIdKind: token.DisplayUserIDKind,
|
|
DisplayUserIdExpiresAtMs: token.DisplayUserIDExpiresAtMs,
|
|
SessionId: token.SessionID,
|
|
AccessToken: token.AccessToken,
|
|
RefreshToken: token.RefreshToken,
|
|
ExpiresInSec: token.ExpiresInSec,
|
|
TokenType: token.TokenType,
|
|
}
|
|
}
|
|
|
|
// toProtoUser 把领域用户转换为 protobuf 用户投影。
|
|
func toProtoUser(user userdomain.User) *userv1.User {
|
|
return &userv1.User{
|
|
UserId: user.UserID,
|
|
Status: toProtoStatus(user.Status),
|
|
CreatedAtMs: user.CreatedAtMs,
|
|
UpdatedAtMs: user.UpdatedAtMs,
|
|
DisplayUserId: user.CurrentDisplayUserID,
|
|
DefaultDisplayUserId: user.DefaultDisplayUserID,
|
|
DisplayUserIdKind: string(user.CurrentDisplayUserIDKind),
|
|
DisplayUserIdExpiresAtMs: user.CurrentDisplayUserIDExpiresAtMs,
|
|
}
|
|
}
|
|
|
|
// toProtoIdentity 把短号领域投影转换为 protobuf 响应。
|
|
func toProtoIdentity(identity userdomain.Identity) *userv1.UserIdentity {
|
|
return &userv1.UserIdentity{
|
|
UserId: identity.UserID,
|
|
DisplayUserId: identity.DisplayUserID,
|
|
Status: string(identity.Status),
|
|
DefaultDisplayUserId: identity.DefaultDisplayUserID,
|
|
DisplayUserIdKind: string(identity.DisplayUserIDKind),
|
|
DisplayUserIdExpiresAtMs: identity.DisplayUserIDExpiresAtMs,
|
|
}
|
|
}
|
|
|
|
// toProtoStatus 固定未知状态的安全默认值。
|
|
func toProtoStatus(status userdomain.Status) userv1.UserStatus {
|
|
switch status {
|
|
case userdomain.StatusActive:
|
|
return userv1.UserStatus_USER_STATUS_ACTIVE
|
|
case userdomain.StatusDisabled:
|
|
return userv1.UserStatus_USER_STATUS_DISABLED
|
|
case userdomain.StatusBanned:
|
|
return userv1.UserStatus_USER_STATUS_BANNED
|
|
default:
|
|
return userv1.UserStatus_USER_STATUS_UNSPECIFIED
|
|
}
|
|
}
|
|
|
|
// authMeta 提取认证链路审计所需的 gateway 透传字段。
|
|
func authMeta(meta *userv1.RequestMeta) authservice.Meta {
|
|
if meta == nil {
|
|
return authservice.Meta{}
|
|
}
|
|
|
|
return authservice.Meta{
|
|
RequestID: meta.GetRequestId(),
|
|
ClientIP: meta.GetClientIp(),
|
|
UserAgent: meta.GetUserAgent(),
|
|
}
|
|
}
|