实现用户系统手机号码绑定和登录(商业版)

This commit is contained in:
GoEdgeLab
2023-11-17 11:51:02 +08:00
parent 1a616e3e80
commit 8ce4b69a76
18 changed files with 1990 additions and 273 deletions

View File

@@ -11542,6 +11542,24 @@
"filename": "service_server_stat_board_chart.proto", "filename": "service_server_stat_board_chart.proto",
"doc": "统计看板条目" "doc": "统计看板条目"
}, },
{
"name": "SMSSenderService",
"methods": [
{
"name": "sendSMS",
"requestMessageName": "SendSMSRequest",
"responseMessageName": "SendSMSResponse",
"code": "rpc sendSMS(SendSMSRequest) returns (SendSMSResponse);",
"doc": "发送短信",
"roles": [
"admin"
],
"isDeprecated": false
}
],
"filename": "service_sms_sender.proto",
"doc": "短信发送服务"
},
{ {
"name": "SSLCertService", "name": "SSLCertService",
"methods": [ "methods": [
@@ -12342,6 +12360,15 @@
"roles": [], "roles": [],
"isDeprecated": false "isDeprecated": false
}, },
{
"name": "checkUserMobile",
"requestMessageName": "CheckUserMobileRequest",
"responseMessageName": "CheckUserMobileResponse",
"code": "rpc checkUserMobile(CheckUserMobileRequest) returns (CheckUserMobileResponse);",
"doc": "检查手机号码是否已被使用",
"roles": [],
"isDeprecated": false
},
{ {
"name": "findUserVerifiedEmailWithUsername", "name": "findUserVerifiedEmailWithUsername",
"requestMessageName": "FindUserVerifiedEmailWithUsernameRequest", "requestMessageName": "FindUserVerifiedEmailWithUsernameRequest",
@@ -12872,6 +12899,40 @@
"filename": "service_user_identity.proto", "filename": "service_user_identity.proto",
"doc": "用户实名认证服务" "doc": "用户实名认证服务"
}, },
{
"name": "UserMobileVerificationService",
"methods": [
{
"name": "verifyUserMobile",
"requestMessageName": "VerifyUserMobileRequest",
"responseMessageName": "VerifyUserMobileResponse",
"code": "rpc verifyUserMobile(VerifyUserMobileRequest) returns (VerifyUserMobileResponse);",
"doc": "认证手机号码",
"roles": [],
"isDeprecated": false
},
{
"name": "sendUserMobileVerification",
"requestMessageName": "SendUserMobileVerificationRequest",
"responseMessageName": "SendUserMobileVerificationResponse",
"code": "rpc sendUserMobileVerification(SendUserMobileVerificationRequest) returns (SendUserMobileVerificationResponse);",
"doc": "发送手机号码认证",
"roles": [],
"isDeprecated": false
},
{
"name": "findLatestUserMobileVerification",
"requestMessageName": "FindLatestUserMobileVerificationRequest",
"responseMessageName": "FindLatestUserMobileVerificationResponse",
"code": "rpc findLatestUserMobileVerification(FindLatestUserMobileVerificationRequest) returns (FindLatestUserMobileVerificationResponse);",
"doc": "查找用户正在等待激活的认证",
"roles": [],
"isDeprecated": false
}
],
"filename": "service_user_mobile_verification.proto",
"doc": "用户手机号码认证服务"
},
{ {
"name": "UserNodeService", "name": "UserNodeService",
"methods": [ "methods": [
@@ -13856,6 +13917,16 @@
"code": "message CheckUserIdentityIsSubmittedResponse {\n\tbool isSubmitted = 1;\n}", "code": "message CheckUserIdentityIsSubmittedResponse {\n\tbool isSubmitted = 1;\n}",
"doc": "" "doc": ""
}, },
{
"name": "CheckUserMobileRequest",
"code": "message CheckUserMobileRequest {\n\tstring mobile = 1; // 手机号码\n}",
"doc": "检查手机号码是否已被验证"
},
{
"name": "CheckUserMobileResponse",
"code": "message CheckUserMobileResponse {\n\tbool exists = 1; // 是否已被使用\n}",
"doc": ""
},
{ {
"name": "CheckUserOTPWithUsernameRequest", "name": "CheckUserOTPWithUsernameRequest",
"code": "message CheckUserOTPWithUsernameRequest {\n\tstring username = 1;\n}", "code": "message CheckUserOTPWithUsernameRequest {\n\tstring username = 1;\n}",
@@ -18786,6 +18857,16 @@
"code": "message FindLatestUserEmailVerificationResponse {\n\tUserEmailVerification userEmailVerification = 1;\n}", "code": "message FindLatestUserEmailVerificationResponse {\n\tUserEmailVerification userEmailVerification = 1;\n}",
"doc": "" "doc": ""
}, },
{
"name": "FindLatestUserMobileVerificationRequest",
"code": "message FindLatestUserMobileVerificationRequest {\n\n}",
"doc": "查找用户正在等待激活的认证"
},
{
"name": "FindLatestUserMobileVerificationResponse",
"code": "message FindLatestUserMobileVerificationResponse {\n\tUserMobileVerification userMobileVerification = 1;\n}",
"doc": ""
},
{ {
"name": "FindLoginSessionRequest", "name": "FindLoginSessionRequest",
"code": "message FindLoginSessionRequest {\n\tstring sid = 1;\n}", "code": "message FindLoginSessionRequest {\n\tstring sid = 1;\n}",
@@ -21236,11 +21317,31 @@
"code": "message SendMessageTaskResponse {\n\tbool isOk = 1; // 是否成功\n\tstring error = 2; // 失败时的提示信息\n\tstring response = 3; // 发送成功后响应内容\n}", "code": "message SendMessageTaskResponse {\n\tbool isOk = 1; // 是否成功\n\tstring error = 2; // 失败时的提示信息\n\tstring response = 3; // 发送成功后响应内容\n}",
"doc": "" "doc": ""
}, },
{
"name": "SendSMSRequest",
"code": "message SendSMSRequest {\n\tstring mobile = 1; // 手机号\n\tstring body = 2; // 内容\n\tstring type = 3; // 渠道类型webHook ...\n\tbytes paramsJSON = 4; // 参数\n}",
"doc": "发送短信"
},
{
"name": "SendSMSResponse",
"code": "message SendSMSResponse {\n\tbool isOk = 1; // 是否成功\n\tstring result = 2; // 发送返回内容,只有失败时才会有数据\n}",
"doc": ""
},
{ {
"name": "SendUserEmailVerificationRequest", "name": "SendUserEmailVerificationRequest",
"code": "message SendUserEmailVerificationRequest {\n\tstring email = 1; // 待验证邮箱\n}", "code": "message SendUserEmailVerificationRequest {\n\tstring email = 1; // 待验证邮箱\n}",
"doc": "发送邮箱认证" "doc": "发送邮箱认证"
}, },
{
"name": "SendUserMobileVerificationRequest",
"code": "message SendUserMobileVerificationRequest {\n\tstring mobile = 1; // 待验证手机号码\n}",
"doc": "发送手机号码认证"
},
{
"name": "SendUserMobileVerificationResponse",
"code": "message SendUserMobileVerificationResponse {\n\tbool isOk = 1; // 是否发送成功\n\tstring errorCode = 2; // 错误代号\n}",
"doc": ""
},
{ {
"name": "SendUserVerifyCodeRequest", "name": "SendUserVerifyCodeRequest",
"code": "message SendUserVerifyCodeRequest {\n\tstring type = 1; // 类型重置密码resetPassword\n\tstring email = 2; // 已验证邮箱地址\n\tstring mobile = 3; // 已验证手机号\n}", "code": "message SendUserVerifyCodeRequest {\n\tstring type = 1; // 类型重置密码resetPassword\n\tstring email = 2; // 已验证邮箱地址\n\tstring mobile = 3; // 已验证手机号\n}",
@@ -22743,7 +22844,7 @@
}, },
{ {
"name": "User", "name": "User",
"code": "message User {\n\tint64 id = 1; // 用户ID\n\tstring username = 2; // 用户名\n\tstring fullname = 3; // 全称\n\tstring mobile = 4;\n\tstring tel = 5;\n\tstring email = 6;\n\tstring verifiedEmail = 20;\n\tstring remark = 7;\n\tbool isOn = 8;\n\tint64 createdAt = 9;\n\tstring registeredIP = 12;\n\tbool isVerified = 13;\n\tbool isRejected = 14;\n\tstring rejectReason = 15;\n\tbool isDeleted = 16;\n\tbool isIndividualIdentified = 17;\n\tbool isEnterpriseIdentified = 18;\n\tstring bandwidthAlgo = 21; // 带宽算法\n\tstring lang = 22; // 语言代号\n\n\tLogin otpLogin = 19; // OTP认证\n\n\tNodeCluster nodeCluster = 10;\n\trepeated UserFeature features = 11;\n}", "code": "message User {\n\tint64 id = 1; // 用户ID\n\tstring username = 2; // 用户名\n\tstring fullname = 3; // 全称\n\tstring mobile = 4; // 手机号码\n\tstring tel = 5; // 联系电话\n\tstring email = 6; // 联系邮箱\n\tstring verifiedEmail = 20; // 已验证邮箱\n\tstring verifiedMobile = 23; // 已验证手机号码\n\tstring remark = 7;\n\tbool isOn = 8;\n\tint64 createdAt = 9;\n\tstring registeredIP = 12;\n\tbool isVerified = 13;\n\tbool isRejected = 14;\n\tstring rejectReason = 15;\n\tbool isDeleted = 16;\n\tbool isIndividualIdentified = 17; // 是否已通过个人验证\n\tbool isEnterpriseIdentified = 18; // 是否已通过企业验证\n\tstring bandwidthAlgo = 21; // 带宽算法\n\tstring lang = 22; // 语言代号\n\n\tLogin otpLogin = 19; // OTP认证\n\n\tNodeCluster nodeCluster = 10;\n\trepeated UserFeature features = 11;\n}",
"doc": "" "doc": ""
}, },
{ {
@@ -22796,6 +22897,11 @@
"code": "message UserIdentity {\n\tint64 id = 1;\n\tstring orgType = 2;\n\tstring type = 3;\n\tstring realName = 4;\n\tstring number = 5;\n\trepeated int64 fileIds = 6;\n\tstring status = 7;\n\tint64 createdAt = 8;\n\tint64 updatedAt = 9;\n\tint64 submittedAt = 10;\n\tint64 rejectedAt = 11;\n\tint64 verifiedAt = 12;\n\tstring rejectReason = 13;\n}", "code": "message UserIdentity {\n\tint64 id = 1;\n\tstring orgType = 2;\n\tstring type = 3;\n\tstring realName = 4;\n\tstring number = 5;\n\trepeated int64 fileIds = 6;\n\tstring status = 7;\n\tint64 createdAt = 8;\n\tint64 updatedAt = 9;\n\tint64 submittedAt = 10;\n\tint64 rejectedAt = 11;\n\tint64 verifiedAt = 12;\n\tstring rejectReason = 13;\n}",
"doc": "" "doc": ""
}, },
{
"name": "UserMobileVerification",
"code": "message UserMobileVerification {\n\tint64 id = 1; // ID\n\tstring mobile = 2; // 手机号码\n\tint64 userId = 3; // 用户ID\n\tstring code = 4; // 代号\n\tint64 createdAt = 5; // 创建时间\n\tbool isSent = 6; // 已发送\n\tbool isVerified = 7; // 已激活\n\tint64 expiresAt = 8; // 过期时间,动态计算而来\n}",
"doc": "手机号码认证"
},
{ {
"name": "UserNode", "name": "UserNode",
"code": "message UserNode {\n\tint64 id = 1;\n\tbool isOn = 2;\n\tstring uniqueId = 3;\n\tstring secret = 4;\n\tstring name = 5;\n\tstring description = 6;\n\tbytes httpJSON = 7;\n\tbytes httpsJSON = 8;\n\tbytes accessAddrsJSON = 9;\n\trepeated string accessAddrs = 10;\n\tbytes statusJSON = 11;\n}", "code": "message UserNode {\n\tint64 id = 1;\n\tbool isOn = 2;\n\tstring uniqueId = 3;\n\tstring secret = 4;\n\tstring name = 5;\n\tstring description = 6;\n\tbytes httpJSON = 7;\n\tbytes httpsJSON = 8;\n\tbytes accessAddrsJSON = 9;\n\trepeated string accessAddrs = 10;\n\tbytes statusJSON = 11;\n}",
@@ -22881,6 +22987,16 @@
"code": "message VerifyUserIdentityRequest {\n\tint64 userIdentityId = 1;\n}", "code": "message VerifyUserIdentityRequest {\n\tint64 userIdentityId = 1;\n}",
"doc": "通过用户实名认证信息" "doc": "通过用户实名认证信息"
}, },
{
"name": "VerifyUserMobileRequest",
"code": "message VerifyUserMobileRequest {\n\tstring mobile = 1; // 手机号\n\tstring code = 2; // 激活码\n}",
"doc": "认证手机号码"
},
{
"name": "VerifyUserMobileResponse",
"code": "message VerifyUserMobileResponse {\n\tint64 userId = 1; // 手机号码对应的用户ID\n\tstring mobile = 2; // 手机号码\n\tstring errorCode = 3; // 错误代号,如果为空,说明没有错误\n\tstring errorMessage = 4; // 错误信息\n}",
"doc": ""
},
{ {
"name": "VerifyUserRequest", "name": "VerifyUserRequest",
"code": "message VerifyUserRequest {\n\tint64 userId = 1;\n\tbool isRejected = 2;\n\tstring rejectReason = 3;\n}", "code": "message VerifyUserRequest {\n\tint64 userId = 1;\n\tbool isRejected = 2;\n\tstring rejectReason = 3;\n}",

View File

@@ -651,6 +651,7 @@ const (
User_LogUpdateUserPricePeriod langs.MessageCode = "user@log_update_user_price_period" // 修改计费周期为 %s User_LogUpdateUserPricePeriod langs.MessageCode = "user@log_update_user_price_period" // 修改计费周期为 %s
User_LogUpdateUserPriceType langs.MessageCode = "user@log_update_user_price_type" // 修改计费类型为 %s User_LogUpdateUserPriceType langs.MessageCode = "user@log_update_user_price_type" // 修改计费类型为 %s
User_LogUpdateUserProfile langs.MessageCode = "user@log_update_user_profile" // 修改个人资料 User_LogUpdateUserProfile langs.MessageCode = "user@log_update_user_profile" // 修改个人资料
User_LogUpdateUserSmsSettings langs.MessageCode = "user@log_update_user_sms_settings" // 修改用户短信设置
User_LogVerifyUser langs.MessageCode = "user@log_verify_user" // 审核用户:%d 结果:%s User_LogVerifyUser langs.MessageCode = "user@log_verify_user" // 审核用户:%d 结果:%s
UserAccessKey_LogCreateUserAccessKey langs.MessageCode = "user_access_key@log_create_user_access_key" // 创建AccessKey %d UserAccessKey_LogCreateUserAccessKey langs.MessageCode = "user_access_key@log_create_user_access_key" // 创建AccessKey %d
UserAccessKey_LogDeleteUserAccessKey langs.MessageCode = "user_access_key@log_delete_user_access_key" // 删除AccessKey %d UserAccessKey_LogDeleteUserAccessKey langs.MessageCode = "user_access_key@log_delete_user_access_key" // 删除AccessKey %d

View File

@@ -652,6 +652,7 @@ func init() {
"user@log_update_user_price_period": "修改计费周期为 %s", "user@log_update_user_price_period": "修改计费周期为 %s",
"user@log_update_user_price_type": "修改计费类型为 %s", "user@log_update_user_price_type": "修改计费类型为 %s",
"user@log_update_user_profile": "修改个人资料", "user@log_update_user_profile": "修改个人资料",
"user@log_update_user_sms_settings": "修改用户短信设置",
"user@log_verify_user": "审核用户:%d 结果:%s", "user@log_verify_user": "审核用户:%d 结果:%s",
"user_access_key@log_create_user_access_key": "创建AccessKey %d", "user_access_key@log_create_user_access_key": "创建AccessKey %d",
"user_access_key@log_delete_user_access_key": "删除AccessKey %d", "user_access_key@log_delete_user_access_key": "删除AccessKey %d",

View File

@@ -1,5 +1,6 @@
{ {
"log_update_user_email_settings": "修改用户邮件设置", "log_update_user_email_settings": "修改用户邮件设置",
"log_update_user_sms_settings": "修改用户短信设置",
"log_update_user_global_settings": "修改用户设置", "log_update_user_global_settings": "修改用户设置",
"log_create_user": "创建用户 %d", "log_create_user": "创建用户 %d",
"log_delete_user": "删除用户 %d", "log_delete_user": "删除用户 %d",

View File

@@ -28,10 +28,11 @@ type User struct {
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // 用户ID Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // 用户ID
Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // 用户名 Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` // 用户名
Fullname string `protobuf:"bytes,3,opt,name=fullname,proto3" json:"fullname,omitempty"` // 全称 Fullname string `protobuf:"bytes,3,opt,name=fullname,proto3" json:"fullname,omitempty"` // 全称
Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` // 手机号码
Tel string `protobuf:"bytes,5,opt,name=tel,proto3" json:"tel,omitempty"` Tel string `protobuf:"bytes,5,opt,name=tel,proto3" json:"tel,omitempty"` // 联系电话
Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` // 联系邮箱
VerifiedEmail string `protobuf:"bytes,20,opt,name=verifiedEmail,proto3" json:"verifiedEmail,omitempty"` VerifiedEmail string `protobuf:"bytes,20,opt,name=verifiedEmail,proto3" json:"verifiedEmail,omitempty"` // 已验证邮箱
VerifiedMobile string `protobuf:"bytes,23,opt,name=verifiedMobile,proto3" json:"verifiedMobile,omitempty"` // 已验证手机号码
Remark string `protobuf:"bytes,7,opt,name=remark,proto3" json:"remark,omitempty"` Remark string `protobuf:"bytes,7,opt,name=remark,proto3" json:"remark,omitempty"`
IsOn bool `protobuf:"varint,8,opt,name=isOn,proto3" json:"isOn,omitempty"` IsOn bool `protobuf:"varint,8,opt,name=isOn,proto3" json:"isOn,omitempty"`
CreatedAt int64 `protobuf:"varint,9,opt,name=createdAt,proto3" json:"createdAt,omitempty"` CreatedAt int64 `protobuf:"varint,9,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
@@ -40,8 +41,8 @@ type User struct {
IsRejected bool `protobuf:"varint,14,opt,name=isRejected,proto3" json:"isRejected,omitempty"` IsRejected bool `protobuf:"varint,14,opt,name=isRejected,proto3" json:"isRejected,omitempty"`
RejectReason string `protobuf:"bytes,15,opt,name=rejectReason,proto3" json:"rejectReason,omitempty"` RejectReason string `protobuf:"bytes,15,opt,name=rejectReason,proto3" json:"rejectReason,omitempty"`
IsDeleted bool `protobuf:"varint,16,opt,name=isDeleted,proto3" json:"isDeleted,omitempty"` IsDeleted bool `protobuf:"varint,16,opt,name=isDeleted,proto3" json:"isDeleted,omitempty"`
IsIndividualIdentified bool `protobuf:"varint,17,opt,name=isIndividualIdentified,proto3" json:"isIndividualIdentified,omitempty"` IsIndividualIdentified bool `protobuf:"varint,17,opt,name=isIndividualIdentified,proto3" json:"isIndividualIdentified,omitempty"` // 是否已通过个人验证
IsEnterpriseIdentified bool `protobuf:"varint,18,opt,name=isEnterpriseIdentified,proto3" json:"isEnterpriseIdentified,omitempty"` IsEnterpriseIdentified bool `protobuf:"varint,18,opt,name=isEnterpriseIdentified,proto3" json:"isEnterpriseIdentified,omitempty"` // 是否已通过企业验证
BandwidthAlgo string `protobuf:"bytes,21,opt,name=bandwidthAlgo,proto3" json:"bandwidthAlgo,omitempty"` // 带宽算法 BandwidthAlgo string `protobuf:"bytes,21,opt,name=bandwidthAlgo,proto3" json:"bandwidthAlgo,omitempty"` // 带宽算法
Lang string `protobuf:"bytes,22,opt,name=lang,proto3" json:"lang,omitempty"` // 语言代号 Lang string `protobuf:"bytes,22,opt,name=lang,proto3" json:"lang,omitempty"` // 语言代号
OtpLogin *Login `protobuf:"bytes,19,opt,name=otpLogin,proto3" json:"otpLogin,omitempty"` // OTP认证 OtpLogin *Login `protobuf:"bytes,19,opt,name=otpLogin,proto3" json:"otpLogin,omitempty"` // OTP认证
@@ -130,6 +131,13 @@ func (x *User) GetVerifiedEmail() string {
return "" return ""
} }
func (x *User) GetVerifiedMobile() string {
if x != nil {
return x.VerifiedMobile
}
return ""
}
func (x *User) GetRemark() string { func (x *User) GetRemark() string {
if x != nil { if x != nil {
return x.Remark return x.Remark
@@ -245,7 +253,7 @@ var file_models_model_user_proto_rawDesc = []byte{
0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x75, 0x73, 0x65,
0x72, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x72, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6c, 0x6f, 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6c, 0x6f,
0x67, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd5, 0x05, 0x0a, 0x04, 0x55, 0x73, 0x67, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfd, 0x05, 0x0a, 0x04, 0x55, 0x73,
0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a,
@@ -257,42 +265,44 @@ var file_models_model_user_proto_rawDesc = []byte{
0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x65, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x65,
0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c,
0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x12, 0x26, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4d, 0x6f, 0x62, 0x69,
0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69,
0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x64, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b,
0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x49, 0x50, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
0x52, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x49, 0x50, 0x12, 0x1e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x0a, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1e, 0x49, 0x50, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
0x0a, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x65, 0x72, 0x65, 0x64, 0x49, 0x50, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69,
0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x22, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x56, 0x65,
0x0a, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0f, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x6a, 0x65,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65,
0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74,
0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
0x12, 0x36, 0x0a, 0x16, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69,
0x52, 0x16, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x73, 0x49, 0x6e,
0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x73, 0x45, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69,
0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x41, 0x6c, 0x67, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08,
0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x52, 0x16, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x49, 0x64,
0x74, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x16, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x6e, 0x64,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6f, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52,
0x70, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x0d, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x12, 0x12,
0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x08, 0x6f, 0x74, 0x70, 0x4c, 0x6f, 0x67, 0x69, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61,
0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6f, 0x74, 0x70, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x13,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52,
0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x08, 0x6f, 0x74, 0x70, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x6e, 0x6f, 0x64,
0x73, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x08,
0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
0x33, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52,
0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@@ -0,0 +1,212 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.19.4
// source: models/model_user_mobile_verification.proto
package pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// 手机号码认证
type UserMobileVerification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // ID
Mobile string `protobuf:"bytes,2,opt,name=mobile,proto3" json:"mobile,omitempty"` // 手机号码
UserId int64 `protobuf:"varint,3,opt,name=userId,proto3" json:"userId,omitempty"` // 用户ID
Code string `protobuf:"bytes,4,opt,name=code,proto3" json:"code,omitempty"` // 代号
CreatedAt int64 `protobuf:"varint,5,opt,name=createdAt,proto3" json:"createdAt,omitempty"` // 创建时间
IsSent bool `protobuf:"varint,6,opt,name=isSent,proto3" json:"isSent,omitempty"` // 已发送
IsVerified bool `protobuf:"varint,7,opt,name=isVerified,proto3" json:"isVerified,omitempty"` // 已激活
ExpiresAt int64 `protobuf:"varint,8,opt,name=expiresAt,proto3" json:"expiresAt,omitempty"` // 过期时间,动态计算而来
}
func (x *UserMobileVerification) Reset() {
*x = UserMobileVerification{}
if protoimpl.UnsafeEnabled {
mi := &file_models_model_user_mobile_verification_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserMobileVerification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserMobileVerification) ProtoMessage() {}
func (x *UserMobileVerification) ProtoReflect() protoreflect.Message {
mi := &file_models_model_user_mobile_verification_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UserMobileVerification.ProtoReflect.Descriptor instead.
func (*UserMobileVerification) Descriptor() ([]byte, []int) {
return file_models_model_user_mobile_verification_proto_rawDescGZIP(), []int{0}
}
func (x *UserMobileVerification) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *UserMobileVerification) GetMobile() string {
if x != nil {
return x.Mobile
}
return ""
}
func (x *UserMobileVerification) GetUserId() int64 {
if x != nil {
return x.UserId
}
return 0
}
func (x *UserMobileVerification) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
func (x *UserMobileVerification) GetCreatedAt() int64 {
if x != nil {
return x.CreatedAt
}
return 0
}
func (x *UserMobileVerification) GetIsSent() bool {
if x != nil {
return x.IsSent
}
return false
}
func (x *UserMobileVerification) GetIsVerified() bool {
if x != nil {
return x.IsVerified
}
return false
}
func (x *UserMobileVerification) GetExpiresAt() int64 {
if x != nil {
return x.ExpiresAt
}
return 0
}
var File_models_model_user_mobile_verification_proto protoreflect.FileDescriptor
var file_models_model_user_mobile_verification_proto_rawDesc = []byte{
0x0a, 0x2b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x75,
0x73, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70,
0x62, 0x22, 0xe0, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65,
0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06,
0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f,
0x62, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03,
0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x05, 0x20,
0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16,
0x0a, 0x06, 0x69, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
0x69, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69,
0x66, 0x69, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x56, 0x65,
0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
0x73, 0x41, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72,
0x65, 0x73, 0x41, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
file_models_model_user_mobile_verification_proto_rawDescOnce sync.Once
file_models_model_user_mobile_verification_proto_rawDescData = file_models_model_user_mobile_verification_proto_rawDesc
)
func file_models_model_user_mobile_verification_proto_rawDescGZIP() []byte {
file_models_model_user_mobile_verification_proto_rawDescOnce.Do(func() {
file_models_model_user_mobile_verification_proto_rawDescData = protoimpl.X.CompressGZIP(file_models_model_user_mobile_verification_proto_rawDescData)
})
return file_models_model_user_mobile_verification_proto_rawDescData
}
var file_models_model_user_mobile_verification_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_models_model_user_mobile_verification_proto_goTypes = []interface{}{
(*UserMobileVerification)(nil), // 0: pb.UserMobileVerification
}
var file_models_model_user_mobile_verification_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_models_model_user_mobile_verification_proto_init() }
func file_models_model_user_mobile_verification_proto_init() {
if File_models_model_user_mobile_verification_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_models_model_user_mobile_verification_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserMobileVerification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_models_model_user_mobile_verification_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_models_model_user_mobile_verification_proto_goTypes,
DependencyIndexes: file_models_model_user_mobile_verification_proto_depIdxs,
MessageInfos: file_models_model_user_mobile_verification_proto_msgTypes,
}.Build()
File_models_model_user_mobile_verification_proto = out.File
file_models_model_user_mobile_verification_proto_rawDesc = nil
file_models_model_user_mobile_verification_proto_goTypes = nil
file_models_model_user_mobile_verification_proto_depIdxs = nil
}

View File

@@ -0,0 +1,250 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.19.4
// source: service_sms_sender.proto
package pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// 发送短信
type SendSMSRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Mobile string `protobuf:"bytes,1,opt,name=mobile,proto3" json:"mobile,omitempty"` // 手机号
Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` // 内容
Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` // 渠道类型webHook ...
ParamsJSON []byte `protobuf:"bytes,4,opt,name=paramsJSON,proto3" json:"paramsJSON,omitempty"` // 参数
}
func (x *SendSMSRequest) Reset() {
*x = SendSMSRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_sms_sender_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SendSMSRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SendSMSRequest) ProtoMessage() {}
func (x *SendSMSRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_sms_sender_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SendSMSRequest.ProtoReflect.Descriptor instead.
func (*SendSMSRequest) Descriptor() ([]byte, []int) {
return file_service_sms_sender_proto_rawDescGZIP(), []int{0}
}
func (x *SendSMSRequest) GetMobile() string {
if x != nil {
return x.Mobile
}
return ""
}
func (x *SendSMSRequest) GetBody() string {
if x != nil {
return x.Body
}
return ""
}
func (x *SendSMSRequest) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *SendSMSRequest) GetParamsJSON() []byte {
if x != nil {
return x.ParamsJSON
}
return nil
}
type SendSMSResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
IsOk bool `protobuf:"varint,1,opt,name=isOk,proto3" json:"isOk,omitempty"` // 是否成功
Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` // 发送返回内容,只有失败时才会有数据
}
func (x *SendSMSResponse) Reset() {
*x = SendSMSResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_sms_sender_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SendSMSResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SendSMSResponse) ProtoMessage() {}
func (x *SendSMSResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_sms_sender_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SendSMSResponse.ProtoReflect.Descriptor instead.
func (*SendSMSResponse) Descriptor() ([]byte, []int) {
return file_service_sms_sender_proto_rawDescGZIP(), []int{1}
}
func (x *SendSMSResponse) GetIsOk() bool {
if x != nil {
return x.IsOk
}
return false
}
func (x *SendSMSResponse) GetResult() string {
if x != nil {
return x.Result
}
return ""
}
var File_service_sms_sender_proto protoreflect.FileDescriptor
var file_service_sms_sender_proto_rawDesc = []byte{
0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6d, 0x73, 0x5f, 0x73, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x22, 0x70,
0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x4d, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04,
0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x4a, 0x53, 0x4f, 0x4e,
0x22, 0x3d, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x4d, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28,
0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32,
0x46, 0x0a, 0x10, 0x53, 0x4d, 0x53, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x53, 0x4d, 0x53, 0x12, 0x12,
0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x4d, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x4d, 0x53, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_service_sms_sender_proto_rawDescOnce sync.Once
file_service_sms_sender_proto_rawDescData = file_service_sms_sender_proto_rawDesc
)
func file_service_sms_sender_proto_rawDescGZIP() []byte {
file_service_sms_sender_proto_rawDescOnce.Do(func() {
file_service_sms_sender_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_sms_sender_proto_rawDescData)
})
return file_service_sms_sender_proto_rawDescData
}
var file_service_sms_sender_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_service_sms_sender_proto_goTypes = []interface{}{
(*SendSMSRequest)(nil), // 0: pb.SendSMSRequest
(*SendSMSResponse)(nil), // 1: pb.SendSMSResponse
}
var file_service_sms_sender_proto_depIdxs = []int32{
0, // 0: pb.SMSSenderService.sendSMS:input_type -> pb.SendSMSRequest
1, // 1: pb.SMSSenderService.sendSMS:output_type -> pb.SendSMSResponse
1, // [1:2] is the sub-list for method output_type
0, // [0:1] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_service_sms_sender_proto_init() }
func file_service_sms_sender_proto_init() {
if File_service_sms_sender_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_service_sms_sender_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendSMSRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_sms_sender_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendSMSResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_sms_sender_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_sms_sender_proto_goTypes,
DependencyIndexes: file_service_sms_sender_proto_depIdxs,
MessageInfos: file_service_sms_sender_proto_msgTypes,
}.Build()
File_service_sms_sender_proto = out.File
file_service_sms_sender_proto_rawDesc = nil
file_service_sms_sender_proto_goTypes = nil
file_service_sms_sender_proto_depIdxs = nil
}

View File

@@ -0,0 +1,109 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.19.4
// source: service_sms_sender.proto
package pb
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
SMSSenderService_SendSMS_FullMethodName = "/pb.SMSSenderService/sendSMS"
)
// SMSSenderServiceClient is the client API for SMSSenderService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type SMSSenderServiceClient interface {
// 发送短信
SendSMS(ctx context.Context, in *SendSMSRequest, opts ...grpc.CallOption) (*SendSMSResponse, error)
}
type sMSSenderServiceClient struct {
cc grpc.ClientConnInterface
}
func NewSMSSenderServiceClient(cc grpc.ClientConnInterface) SMSSenderServiceClient {
return &sMSSenderServiceClient{cc}
}
func (c *sMSSenderServiceClient) SendSMS(ctx context.Context, in *SendSMSRequest, opts ...grpc.CallOption) (*SendSMSResponse, error) {
out := new(SendSMSResponse)
err := c.cc.Invoke(ctx, SMSSenderService_SendSMS_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// SMSSenderServiceServer is the server API for SMSSenderService service.
// All implementations should embed UnimplementedSMSSenderServiceServer
// for forward compatibility
type SMSSenderServiceServer interface {
// 发送短信
SendSMS(context.Context, *SendSMSRequest) (*SendSMSResponse, error)
}
// UnimplementedSMSSenderServiceServer should be embedded to have forward compatible implementations.
type UnimplementedSMSSenderServiceServer struct {
}
func (UnimplementedSMSSenderServiceServer) SendSMS(context.Context, *SendSMSRequest) (*SendSMSResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendSMS not implemented")
}
// UnsafeSMSSenderServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to SMSSenderServiceServer will
// result in compilation errors.
type UnsafeSMSSenderServiceServer interface {
mustEmbedUnimplementedSMSSenderServiceServer()
}
func RegisterSMSSenderServiceServer(s grpc.ServiceRegistrar, srv SMSSenderServiceServer) {
s.RegisterService(&SMSSenderService_ServiceDesc, srv)
}
func _SMSSenderService_SendSMS_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SendSMSRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SMSSenderServiceServer).SendSMS(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SMSSenderService_SendSMS_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SMSSenderServiceServer).SendSMS(ctx, req.(*SendSMSRequest))
}
return interceptor(ctx, in, info, handler)
}
// SMSSenderService_ServiceDesc is the grpc.ServiceDesc for SMSSenderService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var SMSSenderService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "pb.SMSSenderService",
HandlerType: (*SMSSenderServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "sendSMS",
Handler: _SMSSenderService_SendSMS_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_sms_sender.proto",
}

View File

@@ -2506,6 +2506,101 @@ func (x *CheckUserEmailResponse) GetExists() bool {
return false return false
} }
// 检查手机号码是否已被验证
type CheckUserMobileRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Mobile string `protobuf:"bytes,1,opt,name=mobile,proto3" json:"mobile,omitempty"` // 手机号码
}
func (x *CheckUserMobileRequest) Reset() {
*x = CheckUserMobileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CheckUserMobileRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CheckUserMobileRequest) ProtoMessage() {}
func (x *CheckUserMobileRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[42]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CheckUserMobileRequest.ProtoReflect.Descriptor instead.
func (*CheckUserMobileRequest) Descriptor() ([]byte, []int) {
return file_service_user_proto_rawDescGZIP(), []int{42}
}
func (x *CheckUserMobileRequest) GetMobile() string {
if x != nil {
return x.Mobile
}
return ""
}
type CheckUserMobileResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` // 是否已被使用
}
func (x *CheckUserMobileResponse) Reset() {
*x = CheckUserMobileResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CheckUserMobileResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CheckUserMobileResponse) ProtoMessage() {}
func (x *CheckUserMobileResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[43]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CheckUserMobileResponse.ProtoReflect.Descriptor instead.
func (*CheckUserMobileResponse) Descriptor() ([]byte, []int) {
return file_service_user_proto_rawDescGZIP(), []int{43}
}
func (x *CheckUserMobileResponse) GetExists() bool {
if x != nil {
return x.Exists
}
return false
}
// 根据用户名查询用户绑定的邮箱 // 根据用户名查询用户绑定的邮箱
type FindUserVerifiedEmailWithUsernameRequest struct { type FindUserVerifiedEmailWithUsernameRequest struct {
state protoimpl.MessageState state protoimpl.MessageState
@@ -2518,7 +2613,7 @@ type FindUserVerifiedEmailWithUsernameRequest struct {
func (x *FindUserVerifiedEmailWithUsernameRequest) Reset() { func (x *FindUserVerifiedEmailWithUsernameRequest) Reset() {
*x = FindUserVerifiedEmailWithUsernameRequest{} *x = FindUserVerifiedEmailWithUsernameRequest{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[42] mi := &file_service_user_proto_msgTypes[44]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -2531,7 +2626,7 @@ func (x *FindUserVerifiedEmailWithUsernameRequest) String() string {
func (*FindUserVerifiedEmailWithUsernameRequest) ProtoMessage() {} func (*FindUserVerifiedEmailWithUsernameRequest) ProtoMessage() {}
func (x *FindUserVerifiedEmailWithUsernameRequest) ProtoReflect() protoreflect.Message { func (x *FindUserVerifiedEmailWithUsernameRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[42] mi := &file_service_user_proto_msgTypes[44]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -2544,7 +2639,7 @@ func (x *FindUserVerifiedEmailWithUsernameRequest) ProtoReflect() protoreflect.M
// Deprecated: Use FindUserVerifiedEmailWithUsernameRequest.ProtoReflect.Descriptor instead. // Deprecated: Use FindUserVerifiedEmailWithUsernameRequest.ProtoReflect.Descriptor instead.
func (*FindUserVerifiedEmailWithUsernameRequest) Descriptor() ([]byte, []int) { func (*FindUserVerifiedEmailWithUsernameRequest) Descriptor() ([]byte, []int) {
return file_service_user_proto_rawDescGZIP(), []int{42} return file_service_user_proto_rawDescGZIP(), []int{44}
} }
func (x *FindUserVerifiedEmailWithUsernameRequest) GetUsername() string { func (x *FindUserVerifiedEmailWithUsernameRequest) GetUsername() string {
@@ -2565,7 +2660,7 @@ type FindUserVerifiedEmailWithUsernameResponse struct {
func (x *FindUserVerifiedEmailWithUsernameResponse) Reset() { func (x *FindUserVerifiedEmailWithUsernameResponse) Reset() {
*x = FindUserVerifiedEmailWithUsernameResponse{} *x = FindUserVerifiedEmailWithUsernameResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[43] mi := &file_service_user_proto_msgTypes[45]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -2578,7 +2673,7 @@ func (x *FindUserVerifiedEmailWithUsernameResponse) String() string {
func (*FindUserVerifiedEmailWithUsernameResponse) ProtoMessage() {} func (*FindUserVerifiedEmailWithUsernameResponse) ProtoMessage() {}
func (x *FindUserVerifiedEmailWithUsernameResponse) ProtoReflect() protoreflect.Message { func (x *FindUserVerifiedEmailWithUsernameResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[43] mi := &file_service_user_proto_msgTypes[45]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -2591,7 +2686,7 @@ func (x *FindUserVerifiedEmailWithUsernameResponse) ProtoReflect() protoreflect.
// Deprecated: Use FindUserVerifiedEmailWithUsernameResponse.ProtoReflect.Descriptor instead. // Deprecated: Use FindUserVerifiedEmailWithUsernameResponse.ProtoReflect.Descriptor instead.
func (*FindUserVerifiedEmailWithUsernameResponse) Descriptor() ([]byte, []int) { func (*FindUserVerifiedEmailWithUsernameResponse) Descriptor() ([]byte, []int) {
return file_service_user_proto_rawDescGZIP(), []int{43} return file_service_user_proto_rawDescGZIP(), []int{45}
} }
func (x *FindUserVerifiedEmailWithUsernameResponse) GetEmail() string { func (x *FindUserVerifiedEmailWithUsernameResponse) GetEmail() string {
@@ -2618,7 +2713,7 @@ type ComposeUserDashboardResponse_DailyTrafficStat struct {
func (x *ComposeUserDashboardResponse_DailyTrafficStat) Reset() { func (x *ComposeUserDashboardResponse_DailyTrafficStat) Reset() {
*x = ComposeUserDashboardResponse_DailyTrafficStat{} *x = ComposeUserDashboardResponse_DailyTrafficStat{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[44] mi := &file_service_user_proto_msgTypes[46]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -2631,7 +2726,7 @@ func (x *ComposeUserDashboardResponse_DailyTrafficStat) String() string {
func (*ComposeUserDashboardResponse_DailyTrafficStat) ProtoMessage() {} func (*ComposeUserDashboardResponse_DailyTrafficStat) ProtoMessage() {}
func (x *ComposeUserDashboardResponse_DailyTrafficStat) ProtoReflect() protoreflect.Message { func (x *ComposeUserDashboardResponse_DailyTrafficStat) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[44] mi := &file_service_user_proto_msgTypes[46]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -2708,7 +2803,7 @@ type ComposeUserDashboardResponse_DailyPeekBandwidthStat struct {
func (x *ComposeUserDashboardResponse_DailyPeekBandwidthStat) Reset() { func (x *ComposeUserDashboardResponse_DailyPeekBandwidthStat) Reset() {
*x = ComposeUserDashboardResponse_DailyPeekBandwidthStat{} *x = ComposeUserDashboardResponse_DailyPeekBandwidthStat{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[45] mi := &file_service_user_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -2721,7 +2816,7 @@ func (x *ComposeUserDashboardResponse_DailyPeekBandwidthStat) String() string {
func (*ComposeUserDashboardResponse_DailyPeekBandwidthStat) ProtoMessage() {} func (*ComposeUserDashboardResponse_DailyPeekBandwidthStat) ProtoMessage() {}
func (x *ComposeUserDashboardResponse_DailyPeekBandwidthStat) ProtoReflect() protoreflect.Message { func (x *ComposeUserDashboardResponse_DailyPeekBandwidthStat) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[45] mi := &file_service_user_proto_msgTypes[47]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -2763,7 +2858,7 @@ type ComposeUserGlobalBoardResponse_DailyStat struct {
func (x *ComposeUserGlobalBoardResponse_DailyStat) Reset() { func (x *ComposeUserGlobalBoardResponse_DailyStat) Reset() {
*x = ComposeUserGlobalBoardResponse_DailyStat{} *x = ComposeUserGlobalBoardResponse_DailyStat{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[46] mi := &file_service_user_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -2776,7 +2871,7 @@ func (x *ComposeUserGlobalBoardResponse_DailyStat) String() string {
func (*ComposeUserGlobalBoardResponse_DailyStat) ProtoMessage() {} func (*ComposeUserGlobalBoardResponse_DailyStat) ProtoMessage() {}
func (x *ComposeUserGlobalBoardResponse_DailyStat) ProtoReflect() protoreflect.Message { func (x *ComposeUserGlobalBoardResponse_DailyStat) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[46] mi := &file_service_user_proto_msgTypes[48]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -2820,7 +2915,7 @@ type ComposeUserGlobalBoardResponse_TrafficStat struct {
func (x *ComposeUserGlobalBoardResponse_TrafficStat) Reset() { func (x *ComposeUserGlobalBoardResponse_TrafficStat) Reset() {
*x = ComposeUserGlobalBoardResponse_TrafficStat{} *x = ComposeUserGlobalBoardResponse_TrafficStat{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_service_user_proto_msgTypes[47] mi := &file_service_user_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@@ -2833,7 +2928,7 @@ func (x *ComposeUserGlobalBoardResponse_TrafficStat) String() string {
func (*ComposeUserGlobalBoardResponse_TrafficStat) ProtoMessage() {} func (*ComposeUserGlobalBoardResponse_TrafficStat) ProtoMessage() {}
func (x *ComposeUserGlobalBoardResponse_TrafficStat) ProtoReflect() protoreflect.Message { func (x *ComposeUserGlobalBoardResponse_TrafficStat) ProtoReflect() protoreflect.Message {
mi := &file_service_user_proto_msgTypes[47] mi := &file_service_user_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@@ -3212,151 +3307,162 @@ var file_service_user_proto_rawDesc = []byte{
0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x30, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x30, 0x0a, 0x16, 0x43, 0x68, 0x65,
0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20,
0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x46, 0x0a, 0x28, 0x46, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x43,
0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x52, 0x65,
0x6d, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x22, 0x31, 0x0a,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65,
0x61, 0x6d, 0x65, 0x22, 0x41, 0x0a, 0x29, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73,
0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73,
0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x28, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69,
0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x32, 0xe2, 0x10, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x55, 0x73, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x62,
0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55,
0x73, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70,
0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
0x55, 0x73, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,
0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62,
0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
0x12, 0x33, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x15,
0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x14, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c,
0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x2e,
0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14,
0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45,
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x50, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55,
0x73, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65,
0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x38, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14,
0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55,
0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0e, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50,
0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3d, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43,
0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x59, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12,
0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72,
0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x55, 0x73, 0x65,
0x72, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x5c, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f,
0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e,
0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x43,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x43, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65,
0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41,
0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12,
0x21, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x55, 0x73,
0x65, 0x72, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65,
0x73, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65,
0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65,
0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x74, 0x0a, 0x1d, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72,
0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x55,
0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70,
0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61,
0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72,
0x64, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x55, 0x73,
0x65, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
0x65, 0x55, 0x73, 0x65, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x18, 0x63, 0x68, 0x65, 0x63,
0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x54, 0x50, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55,
0x73, 0x65, 0x72, 0x4f, 0x54, 0x50, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61,
0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x54, 0x50, 0x57, 0x69, 0x74, 0x68, 0x55,
0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x50, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73,
0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72,
0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x45, 0x0a, 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50,
0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50,
0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x15, 0x75, 0x70, 0x64, 0x61,
0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f,
0x64, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65,
0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63,
0x65, 0x73, 0x73, 0x12, 0x5c, 0x0a, 0x15, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x70,
0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21,
0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x5c, 0x0a, 0x15, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e,
0x52, 0x65, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70,
0x62, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x47, 0x0a, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69,
0x6c, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72,
0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70,
0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x21, 0x66, 0x69, 0x6e,
0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61,
0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c,
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69,
0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65,
0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08,
0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x41, 0x0a, 0x29, 0x46, 0x69, 0x6e, 0x64,
0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69,
0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x32, 0xae, 0x11, 0x0a, 0x0b,
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x69,
0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55,
0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x76,
0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x56,
0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
0x12, 0x33, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x15,
0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75,
0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55,
0x73, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55,
0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e,
0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x14, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65,
0x72, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x6c, 0x6c,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x6c, 0x69, 0x73,
0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e,
0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73,
0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e,
0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x66, 0x69, 0x6e, 0x64,
0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65,
0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65,
0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x55,
0x73, 0x65, 0x72, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73,
0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4c,
0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x3b, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73,
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3d, 0x0a,
0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72,
0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70,
0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x59, 0x0a, 0x14,
0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x73, 0x68, 0x62,
0x6f, 0x61, 0x72, 0x64, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73,
0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x64, 0x55,
0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f,
0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72,
0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55,
0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75,
0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e,
0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x46, 0x65, 0x61, 0x74,
0x75, 0x72, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43,
0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x55,
0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62,
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69,
0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x1d, 0x66, 0x69, 0x6e, 0x64, 0x41, 0x6c,
0x6c, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x66, 0x69,
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44,
0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x55, 0x73,
0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x16,
0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61,
0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70,
0x6f, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x6f, 0x61,
0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
0x42, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a,
0x18, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x54, 0x50, 0x57, 0x69, 0x74,
0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x43,
0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x54, 0x50, 0x57, 0x69, 0x74, 0x68, 0x55,
0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24,
0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x54, 0x50,
0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72,
0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x46,
0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e,
0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x2e,
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a,
0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65,
0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f,
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50,
0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5c, 0x0a, 0x15, 0x63, 0x68, 0x65, 0x63,
0x6b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73,
0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x15, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x55,
0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
0x20, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72,
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65,
0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63,
0x6b, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72,
0x45, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a,
0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65,
0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4d,
0x6f, 0x62, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70,
0x62, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c,
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x21, 0x66, 0x69,
0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d,
0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x2c, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72,
0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73,
0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66,
0x69, 0x65, 0x64, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72,
0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@@ -3371,7 +3477,7 @@ func file_service_user_proto_rawDescGZIP() []byte {
return file_service_user_proto_rawDescData return file_service_user_proto_rawDescData
} }
var file_service_user_proto_msgTypes = make([]protoimpl.MessageInfo, 48) var file_service_user_proto_msgTypes = make([]protoimpl.MessageInfo, 50)
var file_service_user_proto_goTypes = []interface{}{ var file_service_user_proto_goTypes = []interface{}{
(*CreateUserRequest)(nil), // 0: pb.CreateUserRequest (*CreateUserRequest)(nil), // 0: pb.CreateUserRequest
(*CreateUserResponse)(nil), // 1: pb.CreateUserResponse (*CreateUserResponse)(nil), // 1: pb.CreateUserResponse
@@ -3415,30 +3521,32 @@ var file_service_user_proto_goTypes = []interface{}{
(*RenewUserServersStateResponse)(nil), // 39: pb.RenewUserServersStateResponse (*RenewUserServersStateResponse)(nil), // 39: pb.RenewUserServersStateResponse
(*CheckUserEmailRequest)(nil), // 40: pb.CheckUserEmailRequest (*CheckUserEmailRequest)(nil), // 40: pb.CheckUserEmailRequest
(*CheckUserEmailResponse)(nil), // 41: pb.CheckUserEmailResponse (*CheckUserEmailResponse)(nil), // 41: pb.CheckUserEmailResponse
(*FindUserVerifiedEmailWithUsernameRequest)(nil), // 42: pb.FindUserVerifiedEmailWithUsernameRequest (*CheckUserMobileRequest)(nil), // 42: pb.CheckUserMobileRequest
(*FindUserVerifiedEmailWithUsernameResponse)(nil), // 43: pb.FindUserVerifiedEmailWithUsernameResponse (*CheckUserMobileResponse)(nil), // 43: pb.CheckUserMobileResponse
(*ComposeUserDashboardResponse_DailyTrafficStat)(nil), // 44: pb.ComposeUserDashboardResponse.DailyTrafficStat (*FindUserVerifiedEmailWithUsernameRequest)(nil), // 44: pb.FindUserVerifiedEmailWithUsernameRequest
(*ComposeUserDashboardResponse_DailyPeekBandwidthStat)(nil), // 45: pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat (*FindUserVerifiedEmailWithUsernameResponse)(nil), // 45: pb.FindUserVerifiedEmailWithUsernameResponse
(*ComposeUserGlobalBoardResponse_DailyStat)(nil), // 46: pb.ComposeUserGlobalBoardResponse.DailyStat (*ComposeUserDashboardResponse_DailyTrafficStat)(nil), // 46: pb.ComposeUserDashboardResponse.DailyTrafficStat
(*ComposeUserGlobalBoardResponse_TrafficStat)(nil), // 47: pb.ComposeUserGlobalBoardResponse.TrafficStat (*ComposeUserDashboardResponse_DailyPeekBandwidthStat)(nil), // 47: pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat
(*User)(nil), // 48: pb.User (*ComposeUserGlobalBoardResponse_DailyStat)(nil), // 48: pb.ComposeUserGlobalBoardResponse.DailyStat
(*UserFeature)(nil), // 49: pb.UserFeature (*ComposeUserGlobalBoardResponse_TrafficStat)(nil), // 49: pb.ComposeUserGlobalBoardResponse.TrafficStat
(*NodeValue)(nil), // 50: pb.NodeValue (*User)(nil), // 50: pb.User
(*RPCSuccess)(nil), // 51: pb.RPCSuccess (*UserFeature)(nil), // 51: pb.UserFeature
(*RPCCountResponse)(nil), // 52: pb.RPCCountResponse (*NodeValue)(nil), // 52: pb.NodeValue
(*RPCSuccess)(nil), // 53: pb.RPCSuccess
(*RPCCountResponse)(nil), // 54: pb.RPCCountResponse
} }
var file_service_user_proto_depIdxs = []int32{ var file_service_user_proto_depIdxs = []int32{
48, // 0: pb.ListEnabledUsersResponse.users:type_name -> pb.User 50, // 0: pb.ListEnabledUsersResponse.users:type_name -> pb.User
48, // 1: pb.FindEnabledUserResponse.user:type_name -> pb.User 50, // 1: pb.FindEnabledUserResponse.user:type_name -> pb.User
44, // 2: pb.ComposeUserDashboardResponse.dailyTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyTrafficStat 46, // 2: pb.ComposeUserDashboardResponse.dailyTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyTrafficStat
45, // 3: pb.ComposeUserDashboardResponse.dailyPeekBandwidthStats:type_name -> pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat 47, // 3: pb.ComposeUserDashboardResponse.dailyPeekBandwidthStats:type_name -> pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat
49, // 4: pb.FindUserFeaturesResponse.features:type_name -> pb.UserFeature 51, // 4: pb.FindUserFeaturesResponse.features:type_name -> pb.UserFeature
49, // 5: pb.FindAllUserFeatureDefinitionsResponse.features:type_name -> pb.UserFeature 51, // 5: pb.FindAllUserFeatureDefinitionsResponse.features:type_name -> pb.UserFeature
46, // 6: pb.ComposeUserGlobalBoardResponse.dailyStats:type_name -> pb.ComposeUserGlobalBoardResponse.DailyStat 48, // 6: pb.ComposeUserGlobalBoardResponse.dailyStats:type_name -> pb.ComposeUserGlobalBoardResponse.DailyStat
50, // 7: pb.ComposeUserGlobalBoardResponse.cpuNodeValues:type_name -> pb.NodeValue 52, // 7: pb.ComposeUserGlobalBoardResponse.cpuNodeValues:type_name -> pb.NodeValue
50, // 8: pb.ComposeUserGlobalBoardResponse.memoryNodeValues:type_name -> pb.NodeValue 52, // 8: pb.ComposeUserGlobalBoardResponse.memoryNodeValues:type_name -> pb.NodeValue
50, // 9: pb.ComposeUserGlobalBoardResponse.loadNodeValues:type_name -> pb.NodeValue 52, // 9: pb.ComposeUserGlobalBoardResponse.loadNodeValues:type_name -> pb.NodeValue
47, // 10: pb.ComposeUserGlobalBoardResponse.topTrafficStats:type_name -> pb.ComposeUserGlobalBoardResponse.TrafficStat 49, // 10: pb.ComposeUserGlobalBoardResponse.topTrafficStats:type_name -> pb.ComposeUserGlobalBoardResponse.TrafficStat
0, // 11: pb.UserService.createUser:input_type -> pb.CreateUserRequest 0, // 11: pb.UserService.createUser:input_type -> pb.CreateUserRequest
2, // 12: pb.UserService.registerUser:input_type -> pb.RegisterUserRequest 2, // 12: pb.UserService.registerUser:input_type -> pb.RegisterUserRequest
4, // 13: pb.UserService.verifyUser:input_type -> pb.VerifyUserRequest 4, // 13: pb.UserService.verifyUser:input_type -> pb.VerifyUserRequest
@@ -3465,36 +3573,38 @@ var file_service_user_proto_depIdxs = []int32{
36, // 34: pb.UserService.checkUserServersState:input_type -> pb.CheckUserServersStateRequest 36, // 34: pb.UserService.checkUserServersState:input_type -> pb.CheckUserServersStateRequest
38, // 35: pb.UserService.renewUserServersState:input_type -> pb.RenewUserServersStateRequest 38, // 35: pb.UserService.renewUserServersState:input_type -> pb.RenewUserServersStateRequest
40, // 36: pb.UserService.checkUserEmail:input_type -> pb.CheckUserEmailRequest 40, // 36: pb.UserService.checkUserEmail:input_type -> pb.CheckUserEmailRequest
42, // 37: pb.UserService.findUserVerifiedEmailWithUsername:input_type -> pb.FindUserVerifiedEmailWithUsernameRequest 42, // 37: pb.UserService.checkUserMobile:input_type -> pb.CheckUserMobileRequest
1, // 38: pb.UserService.createUser:output_type -> pb.CreateUserResponse 44, // 38: pb.UserService.findUserVerifiedEmailWithUsername:input_type -> pb.FindUserVerifiedEmailWithUsernameRequest
3, // 39: pb.UserService.registerUser:output_type -> pb.RegisterUserResponse 1, // 39: pb.UserService.createUser:output_type -> pb.CreateUserResponse
51, // 40: pb.UserService.verifyUser:output_type -> pb.RPCSuccess 3, // 40: pb.UserService.registerUser:output_type -> pb.RegisterUserResponse
51, // 41: pb.UserService.updateUser:output_type -> pb.RPCSuccess 53, // 41: pb.UserService.verifyUser:output_type -> pb.RPCSuccess
51, // 42: pb.UserService.deleteUser:output_type -> pb.RPCSuccess 53, // 42: pb.UserService.updateUser:output_type -> pb.RPCSuccess
52, // 43: pb.UserService.countAllEnabledUsers:output_type -> pb.RPCCountResponse 53, // 43: pb.UserService.deleteUser:output_type -> pb.RPCSuccess
9, // 44: pb.UserService.listEnabledUsers:output_type -> pb.ListEnabledUsersResponse 54, // 44: pb.UserService.countAllEnabledUsers:output_type -> pb.RPCCountResponse
11, // 45: pb.UserService.findEnabledUser:output_type -> pb.FindEnabledUserResponse 9, // 45: pb.UserService.listEnabledUsers:output_type -> pb.ListEnabledUsersResponse
13, // 46: pb.UserService.checkUserUsername:output_type -> pb.CheckUserUsernameResponse 11, // 46: pb.UserService.findEnabledUser:output_type -> pb.FindEnabledUserResponse
15, // 47: pb.UserService.loginUser:output_type -> pb.LoginUserResponse 13, // 47: pb.UserService.checkUserUsername:output_type -> pb.CheckUserUsernameResponse
51, // 48: pb.UserService.updateUserInfo:output_type -> pb.RPCSuccess 15, // 48: pb.UserService.loginUser:output_type -> pb.LoginUserResponse
51, // 49: pb.UserService.updateUserLogin:output_type -> pb.RPCSuccess 53, // 49: pb.UserService.updateUserInfo:output_type -> pb.RPCSuccess
19, // 50: pb.UserService.composeUserDashboard:output_type -> pb.ComposeUserDashboardResponse 53, // 50: pb.UserService.updateUserLogin:output_type -> pb.RPCSuccess
21, // 51: pb.UserService.findUserNodeClusterId:output_type -> pb.FindUserNodeClusterIdResponse 19, // 51: pb.UserService.composeUserDashboard:output_type -> pb.ComposeUserDashboardResponse
51, // 52: pb.UserService.updateUserFeatures:output_type -> pb.RPCSuccess 21, // 52: pb.UserService.findUserNodeClusterId:output_type -> pb.FindUserNodeClusterIdResponse
51, // 53: pb.UserService.updateAllUsersFeatures:output_type -> pb.RPCSuccess 53, // 53: pb.UserService.updateUserFeatures:output_type -> pb.RPCSuccess
25, // 54: pb.UserService.findUserFeatures:output_type -> pb.FindUserFeaturesResponse 53, // 54: pb.UserService.updateAllUsersFeatures:output_type -> pb.RPCSuccess
27, // 55: pb.UserService.findAllUserFeatureDefinitions:output_type -> pb.FindAllUserFeatureDefinitionsResponse 25, // 55: pb.UserService.findUserFeatures:output_type -> pb.FindUserFeaturesResponse
29, // 56: pb.UserService.composeUserGlobalBoard:output_type -> pb.ComposeUserGlobalBoardResponse 27, // 56: pb.UserService.findAllUserFeatureDefinitions:output_type -> pb.FindAllUserFeatureDefinitionsResponse
31, // 57: pb.UserService.checkUserOTPWithUsername:output_type -> pb.CheckUserOTPWithUsernameResponse 29, // 57: pb.UserService.composeUserGlobalBoard:output_type -> pb.ComposeUserGlobalBoardResponse
33, // 58: pb.UserService.findUserPriceInfo:output_type -> pb.FindUserPriceInfoResponse 31, // 58: pb.UserService.checkUserOTPWithUsername:output_type -> pb.CheckUserOTPWithUsernameResponse
51, // 59: pb.UserService.updateUserPriceType:output_type -> pb.RPCSuccess 33, // 59: pb.UserService.findUserPriceInfo:output_type -> pb.FindUserPriceInfoResponse
51, // 60: pb.UserService.updateUserPricePeriod:output_type -> pb.RPCSuccess 53, // 60: pb.UserService.updateUserPriceType:output_type -> pb.RPCSuccess
37, // 61: pb.UserService.checkUserServersState:output_type -> pb.CheckUserServersStateResponse 53, // 61: pb.UserService.updateUserPricePeriod:output_type -> pb.RPCSuccess
39, // 62: pb.UserService.renewUserServersState:output_type -> pb.RenewUserServersStateResponse 37, // 62: pb.UserService.checkUserServersState:output_type -> pb.CheckUserServersStateResponse
41, // 63: pb.UserService.checkUserEmail:output_type -> pb.CheckUserEmailResponse 39, // 63: pb.UserService.renewUserServersState:output_type -> pb.RenewUserServersStateResponse
43, // 64: pb.UserService.findUserVerifiedEmailWithUsername:output_type -> pb.FindUserVerifiedEmailWithUsernameResponse 41, // 64: pb.UserService.checkUserEmail:output_type -> pb.CheckUserEmailResponse
38, // [38:65] is the sub-list for method output_type 43, // 65: pb.UserService.checkUserMobile:output_type -> pb.CheckUserMobileResponse
11, // [11:38] is the sub-list for method input_type 45, // 66: pb.UserService.findUserVerifiedEmailWithUsername:output_type -> pb.FindUserVerifiedEmailWithUsernameResponse
39, // [39:67] is the sub-list for method output_type
11, // [11:39] is the sub-list for method input_type
11, // [11:11] is the sub-list for extension type_name 11, // [11:11] is the sub-list for extension type_name
11, // [11:11] is the sub-list for extension extendee 11, // [11:11] is the sub-list for extension extendee
0, // [0:11] is the sub-list for field type_name 0, // [0:11] is the sub-list for field type_name
@@ -4015,7 +4125,7 @@ func file_service_user_proto_init() {
} }
} }
file_service_user_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { file_service_user_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindUserVerifiedEmailWithUsernameRequest); i { switch v := v.(*CheckUserMobileRequest); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@@ -4027,7 +4137,7 @@ func file_service_user_proto_init() {
} }
} }
file_service_user_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { file_service_user_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindUserVerifiedEmailWithUsernameResponse); i { switch v := v.(*CheckUserMobileResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@@ -4039,7 +4149,7 @@ func file_service_user_proto_init() {
} }
} }
file_service_user_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { file_service_user_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeUserDashboardResponse_DailyTrafficStat); i { switch v := v.(*FindUserVerifiedEmailWithUsernameRequest); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@@ -4051,7 +4161,7 @@ func file_service_user_proto_init() {
} }
} }
file_service_user_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { file_service_user_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeUserDashboardResponse_DailyPeekBandwidthStat); i { switch v := v.(*FindUserVerifiedEmailWithUsernameResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@@ -4063,7 +4173,7 @@ func file_service_user_proto_init() {
} }
} }
file_service_user_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { file_service_user_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeUserGlobalBoardResponse_DailyStat); i { switch v := v.(*ComposeUserDashboardResponse_DailyTrafficStat); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@@ -4075,6 +4185,30 @@ func file_service_user_proto_init() {
} }
} }
file_service_user_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { file_service_user_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeUserDashboardResponse_DailyPeekBandwidthStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_user_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeUserGlobalBoardResponse_DailyStat); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_user_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComposeUserGlobalBoardResponse_TrafficStat); i { switch v := v.(*ComposeUserGlobalBoardResponse_TrafficStat); i {
case 0: case 0:
return &v.state return &v.state
@@ -4093,7 +4227,7 @@ func file_service_user_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_user_proto_rawDesc, RawDescriptor: file_service_user_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 48, NumMessages: 50,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },

View File

@@ -45,6 +45,7 @@ const (
UserService_CheckUserServersState_FullMethodName = "/pb.UserService/checkUserServersState" UserService_CheckUserServersState_FullMethodName = "/pb.UserService/checkUserServersState"
UserService_RenewUserServersState_FullMethodName = "/pb.UserService/renewUserServersState" UserService_RenewUserServersState_FullMethodName = "/pb.UserService/renewUserServersState"
UserService_CheckUserEmail_FullMethodName = "/pb.UserService/checkUserEmail" UserService_CheckUserEmail_FullMethodName = "/pb.UserService/checkUserEmail"
UserService_CheckUserMobile_FullMethodName = "/pb.UserService/checkUserMobile"
UserService_FindUserVerifiedEmailWithUsername_FullMethodName = "/pb.UserService/findUserVerifiedEmailWithUsername" UserService_FindUserVerifiedEmailWithUsername_FullMethodName = "/pb.UserService/findUserVerifiedEmailWithUsername"
) )
@@ -104,6 +105,8 @@ type UserServiceClient interface {
RenewUserServersState(ctx context.Context, in *RenewUserServersStateRequest, opts ...grpc.CallOption) (*RenewUserServersStateResponse, error) RenewUserServersState(ctx context.Context, in *RenewUserServersStateRequest, opts ...grpc.CallOption) (*RenewUserServersStateResponse, error)
// 检查邮箱是否已被使用 // 检查邮箱是否已被使用
CheckUserEmail(ctx context.Context, in *CheckUserEmailRequest, opts ...grpc.CallOption) (*CheckUserEmailResponse, error) CheckUserEmail(ctx context.Context, in *CheckUserEmailRequest, opts ...grpc.CallOption) (*CheckUserEmailResponse, error)
// 检查手机号码是否已被使用
CheckUserMobile(ctx context.Context, in *CheckUserMobileRequest, opts ...grpc.CallOption) (*CheckUserMobileResponse, error)
// 根据用户名查询用户绑定的邮箱 // 根据用户名查询用户绑定的邮箱
FindUserVerifiedEmailWithUsername(ctx context.Context, in *FindUserVerifiedEmailWithUsernameRequest, opts ...grpc.CallOption) (*FindUserVerifiedEmailWithUsernameResponse, error) FindUserVerifiedEmailWithUsername(ctx context.Context, in *FindUserVerifiedEmailWithUsernameRequest, opts ...grpc.CallOption) (*FindUserVerifiedEmailWithUsernameResponse, error)
} }
@@ -350,6 +353,15 @@ func (c *userServiceClient) CheckUserEmail(ctx context.Context, in *CheckUserEma
return out, nil return out, nil
} }
func (c *userServiceClient) CheckUserMobile(ctx context.Context, in *CheckUserMobileRequest, opts ...grpc.CallOption) (*CheckUserMobileResponse, error) {
out := new(CheckUserMobileResponse)
err := c.cc.Invoke(ctx, UserService_CheckUserMobile_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userServiceClient) FindUserVerifiedEmailWithUsername(ctx context.Context, in *FindUserVerifiedEmailWithUsernameRequest, opts ...grpc.CallOption) (*FindUserVerifiedEmailWithUsernameResponse, error) { func (c *userServiceClient) FindUserVerifiedEmailWithUsername(ctx context.Context, in *FindUserVerifiedEmailWithUsernameRequest, opts ...grpc.CallOption) (*FindUserVerifiedEmailWithUsernameResponse, error) {
out := new(FindUserVerifiedEmailWithUsernameResponse) out := new(FindUserVerifiedEmailWithUsernameResponse)
err := c.cc.Invoke(ctx, UserService_FindUserVerifiedEmailWithUsername_FullMethodName, in, out, opts...) err := c.cc.Invoke(ctx, UserService_FindUserVerifiedEmailWithUsername_FullMethodName, in, out, opts...)
@@ -415,6 +427,8 @@ type UserServiceServer interface {
RenewUserServersState(context.Context, *RenewUserServersStateRequest) (*RenewUserServersStateResponse, error) RenewUserServersState(context.Context, *RenewUserServersStateRequest) (*RenewUserServersStateResponse, error)
// 检查邮箱是否已被使用 // 检查邮箱是否已被使用
CheckUserEmail(context.Context, *CheckUserEmailRequest) (*CheckUserEmailResponse, error) CheckUserEmail(context.Context, *CheckUserEmailRequest) (*CheckUserEmailResponse, error)
// 检查手机号码是否已被使用
CheckUserMobile(context.Context, *CheckUserMobileRequest) (*CheckUserMobileResponse, error)
// 根据用户名查询用户绑定的邮箱 // 根据用户名查询用户绑定的邮箱
FindUserVerifiedEmailWithUsername(context.Context, *FindUserVerifiedEmailWithUsernameRequest) (*FindUserVerifiedEmailWithUsernameResponse, error) FindUserVerifiedEmailWithUsername(context.Context, *FindUserVerifiedEmailWithUsernameRequest) (*FindUserVerifiedEmailWithUsernameResponse, error)
} }
@@ -501,6 +515,9 @@ func (UnimplementedUserServiceServer) RenewUserServersState(context.Context, *Re
func (UnimplementedUserServiceServer) CheckUserEmail(context.Context, *CheckUserEmailRequest) (*CheckUserEmailResponse, error) { func (UnimplementedUserServiceServer) CheckUserEmail(context.Context, *CheckUserEmailRequest) (*CheckUserEmailResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CheckUserEmail not implemented") return nil, status.Errorf(codes.Unimplemented, "method CheckUserEmail not implemented")
} }
func (UnimplementedUserServiceServer) CheckUserMobile(context.Context, *CheckUserMobileRequest) (*CheckUserMobileResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CheckUserMobile not implemented")
}
func (UnimplementedUserServiceServer) FindUserVerifiedEmailWithUsername(context.Context, *FindUserVerifiedEmailWithUsernameRequest) (*FindUserVerifiedEmailWithUsernameResponse, error) { func (UnimplementedUserServiceServer) FindUserVerifiedEmailWithUsername(context.Context, *FindUserVerifiedEmailWithUsernameRequest) (*FindUserVerifiedEmailWithUsernameResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindUserVerifiedEmailWithUsername not implemented") return nil, status.Errorf(codes.Unimplemented, "method FindUserVerifiedEmailWithUsername not implemented")
} }
@@ -984,6 +1001,24 @@ func _UserService_CheckUserEmail_Handler(srv interface{}, ctx context.Context, d
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _UserService_CheckUserMobile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CheckUserMobileRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServiceServer).CheckUserMobile(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: UserService_CheckUserMobile_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServiceServer).CheckUserMobile(ctx, req.(*CheckUserMobileRequest))
}
return interceptor(ctx, in, info, handler)
}
func _UserService_FindUserVerifiedEmailWithUsername_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _UserService_FindUserVerifiedEmailWithUsername_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindUserVerifiedEmailWithUsernameRequest) in := new(FindUserVerifiedEmailWithUsernameRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@@ -1113,6 +1148,10 @@ var UserService_ServiceDesc = grpc.ServiceDesc{
MethodName: "checkUserEmail", MethodName: "checkUserEmail",
Handler: _UserService_CheckUserEmail_Handler, Handler: _UserService_CheckUserEmail_Handler,
}, },
{
MethodName: "checkUserMobile",
Handler: _UserService_CheckUserMobile_Handler,
},
{ {
MethodName: "findUserVerifiedEmailWithUsername", MethodName: "findUserVerifiedEmailWithUsername",
Handler: _UserService_FindUserVerifiedEmailWithUsername_Handler, Handler: _UserService_FindUserVerifiedEmailWithUsername_Handler,

View File

@@ -0,0 +1,541 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v3.19.4
// source: service_user_mobile_verification.proto
package pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// 认证手机号码
type VerifyUserMobileRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Mobile string `protobuf:"bytes,1,opt,name=mobile,proto3" json:"mobile,omitempty"` // 手机号
Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` // 激活码
}
func (x *VerifyUserMobileRequest) Reset() {
*x = VerifyUserMobileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_mobile_verification_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VerifyUserMobileRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VerifyUserMobileRequest) ProtoMessage() {}
func (x *VerifyUserMobileRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_user_mobile_verification_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use VerifyUserMobileRequest.ProtoReflect.Descriptor instead.
func (*VerifyUserMobileRequest) Descriptor() ([]byte, []int) {
return file_service_user_mobile_verification_proto_rawDescGZIP(), []int{0}
}
func (x *VerifyUserMobileRequest) GetMobile() string {
if x != nil {
return x.Mobile
}
return ""
}
func (x *VerifyUserMobileRequest) GetCode() string {
if x != nil {
return x.Code
}
return ""
}
type VerifyUserMobileResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` // 手机号码对应的用户ID
Mobile string `protobuf:"bytes,2,opt,name=mobile,proto3" json:"mobile,omitempty"` // 手机号码
ErrorCode string `protobuf:"bytes,3,opt,name=errorCode,proto3" json:"errorCode,omitempty"` // 错误代号,如果为空,说明没有错误
ErrorMessage string `protobuf:"bytes,4,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"` // 错误信息
}
func (x *VerifyUserMobileResponse) Reset() {
*x = VerifyUserMobileResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_mobile_verification_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VerifyUserMobileResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VerifyUserMobileResponse) ProtoMessage() {}
func (x *VerifyUserMobileResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_user_mobile_verification_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use VerifyUserMobileResponse.ProtoReflect.Descriptor instead.
func (*VerifyUserMobileResponse) Descriptor() ([]byte, []int) {
return file_service_user_mobile_verification_proto_rawDescGZIP(), []int{1}
}
func (x *VerifyUserMobileResponse) GetUserId() int64 {
if x != nil {
return x.UserId
}
return 0
}
func (x *VerifyUserMobileResponse) GetMobile() string {
if x != nil {
return x.Mobile
}
return ""
}
func (x *VerifyUserMobileResponse) GetErrorCode() string {
if x != nil {
return x.ErrorCode
}
return ""
}
func (x *VerifyUserMobileResponse) GetErrorMessage() string {
if x != nil {
return x.ErrorMessage
}
return ""
}
// 发送手机号码认证
type SendUserMobileVerificationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Mobile string `protobuf:"bytes,1,opt,name=mobile,proto3" json:"mobile,omitempty"` // 待验证手机号码
}
func (x *SendUserMobileVerificationRequest) Reset() {
*x = SendUserMobileVerificationRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_mobile_verification_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SendUserMobileVerificationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SendUserMobileVerificationRequest) ProtoMessage() {}
func (x *SendUserMobileVerificationRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_user_mobile_verification_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SendUserMobileVerificationRequest.ProtoReflect.Descriptor instead.
func (*SendUserMobileVerificationRequest) Descriptor() ([]byte, []int) {
return file_service_user_mobile_verification_proto_rawDescGZIP(), []int{2}
}
func (x *SendUserMobileVerificationRequest) GetMobile() string {
if x != nil {
return x.Mobile
}
return ""
}
type SendUserMobileVerificationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
IsOk bool `protobuf:"varint,1,opt,name=isOk,proto3" json:"isOk,omitempty"` // 是否发送成功
ErrorCode string `protobuf:"bytes,2,opt,name=errorCode,proto3" json:"errorCode,omitempty"` // 错误代号
}
func (x *SendUserMobileVerificationResponse) Reset() {
*x = SendUserMobileVerificationResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_mobile_verification_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SendUserMobileVerificationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SendUserMobileVerificationResponse) ProtoMessage() {}
func (x *SendUserMobileVerificationResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_user_mobile_verification_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SendUserMobileVerificationResponse.ProtoReflect.Descriptor instead.
func (*SendUserMobileVerificationResponse) Descriptor() ([]byte, []int) {
return file_service_user_mobile_verification_proto_rawDescGZIP(), []int{3}
}
func (x *SendUserMobileVerificationResponse) GetIsOk() bool {
if x != nil {
return x.IsOk
}
return false
}
func (x *SendUserMobileVerificationResponse) GetErrorCode() string {
if x != nil {
return x.ErrorCode
}
return ""
}
// 查找用户正在等待激活的认证
type FindLatestUserMobileVerificationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *FindLatestUserMobileVerificationRequest) Reset() {
*x = FindLatestUserMobileVerificationRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_mobile_verification_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindLatestUserMobileVerificationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindLatestUserMobileVerificationRequest) ProtoMessage() {}
func (x *FindLatestUserMobileVerificationRequest) ProtoReflect() protoreflect.Message {
mi := &file_service_user_mobile_verification_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FindLatestUserMobileVerificationRequest.ProtoReflect.Descriptor instead.
func (*FindLatestUserMobileVerificationRequest) Descriptor() ([]byte, []int) {
return file_service_user_mobile_verification_proto_rawDescGZIP(), []int{4}
}
type FindLatestUserMobileVerificationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UserMobileVerification *UserMobileVerification `protobuf:"bytes,1,opt,name=userMobileVerification,proto3" json:"userMobileVerification,omitempty"`
}
func (x *FindLatestUserMobileVerificationResponse) Reset() {
*x = FindLatestUserMobileVerificationResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_service_user_mobile_verification_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindLatestUserMobileVerificationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindLatestUserMobileVerificationResponse) ProtoMessage() {}
func (x *FindLatestUserMobileVerificationResponse) ProtoReflect() protoreflect.Message {
mi := &file_service_user_mobile_verification_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FindLatestUserMobileVerificationResponse.ProtoReflect.Descriptor instead.
func (*FindLatestUserMobileVerificationResponse) Descriptor() ([]byte, []int) {
return file_service_user_mobile_verification_proto_rawDescGZIP(), []int{5}
}
func (x *FindLatestUserMobileVerificationResponse) GetUserMobileVerification() *UserMobileVerification {
if x != nil {
return x.UserMobileVerification
}
return nil
}
var File_service_user_mobile_verification_proto protoreflect.FileDescriptor
var file_service_user_mobile_verification_proto_rawDesc = []byte{
0x0a, 0x26, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d,
0x6f, 0x62, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x2b, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f,
0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x45, 0x0a, 0x17, 0x56, 0x65, 0x72,
0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x22, 0x8c, 0x01, 0x0a, 0x18, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x4d,
0x6f, 0x62, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a,
0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75,
0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a,
0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65,
0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
0x3b, 0x0a, 0x21, 0x53, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c,
0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x22, 0x56, 0x0a, 0x22,
0x53, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65,
0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
0x52, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43,
0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72,
0x43, 0x6f, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x27, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65,
0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69,
0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
0x7e, 0x0a, 0x28, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65,
0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x16, 0x75,
0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62,
0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x75, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62,
0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32,
0xda, 0x02, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65,
0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x12, 0x4d, 0x0a, 0x10, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x4d,
0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66,
0x79, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73,
0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x6b, 0x0a, 0x1a, 0x73, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69,
0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25,
0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69,
0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x55,
0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a,
0x20, 0x66, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d,
0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73,
0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x55, 0x73,
0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04,
0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_service_user_mobile_verification_proto_rawDescOnce sync.Once
file_service_user_mobile_verification_proto_rawDescData = file_service_user_mobile_verification_proto_rawDesc
)
func file_service_user_mobile_verification_proto_rawDescGZIP() []byte {
file_service_user_mobile_verification_proto_rawDescOnce.Do(func() {
file_service_user_mobile_verification_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_user_mobile_verification_proto_rawDescData)
})
return file_service_user_mobile_verification_proto_rawDescData
}
var file_service_user_mobile_verification_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_service_user_mobile_verification_proto_goTypes = []interface{}{
(*VerifyUserMobileRequest)(nil), // 0: pb.VerifyUserMobileRequest
(*VerifyUserMobileResponse)(nil), // 1: pb.VerifyUserMobileResponse
(*SendUserMobileVerificationRequest)(nil), // 2: pb.SendUserMobileVerificationRequest
(*SendUserMobileVerificationResponse)(nil), // 3: pb.SendUserMobileVerificationResponse
(*FindLatestUserMobileVerificationRequest)(nil), // 4: pb.FindLatestUserMobileVerificationRequest
(*FindLatestUserMobileVerificationResponse)(nil), // 5: pb.FindLatestUserMobileVerificationResponse
(*UserMobileVerification)(nil), // 6: pb.UserMobileVerification
}
var file_service_user_mobile_verification_proto_depIdxs = []int32{
6, // 0: pb.FindLatestUserMobileVerificationResponse.userMobileVerification:type_name -> pb.UserMobileVerification
0, // 1: pb.UserMobileVerificationService.verifyUserMobile:input_type -> pb.VerifyUserMobileRequest
2, // 2: pb.UserMobileVerificationService.sendUserMobileVerification:input_type -> pb.SendUserMobileVerificationRequest
4, // 3: pb.UserMobileVerificationService.findLatestUserMobileVerification:input_type -> pb.FindLatestUserMobileVerificationRequest
1, // 4: pb.UserMobileVerificationService.verifyUserMobile:output_type -> pb.VerifyUserMobileResponse
3, // 5: pb.UserMobileVerificationService.sendUserMobileVerification:output_type -> pb.SendUserMobileVerificationResponse
5, // 6: pb.UserMobileVerificationService.findLatestUserMobileVerification:output_type -> pb.FindLatestUserMobileVerificationResponse
4, // [4:7] is the sub-list for method output_type
1, // [1:4] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_service_user_mobile_verification_proto_init() }
func file_service_user_mobile_verification_proto_init() {
if File_service_user_mobile_verification_proto != nil {
return
}
file_models_model_user_mobile_verification_proto_init()
if !protoimpl.UnsafeEnabled {
file_service_user_mobile_verification_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VerifyUserMobileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_user_mobile_verification_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VerifyUserMobileResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_user_mobile_verification_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendUserMobileVerificationRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_user_mobile_verification_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendUserMobileVerificationResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_user_mobile_verification_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindLatestUserMobileVerificationRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_service_user_mobile_verification_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindLatestUserMobileVerificationResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_user_mobile_verification_proto_rawDesc,
NumEnums: 0,
NumMessages: 6,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_service_user_mobile_verification_proto_goTypes,
DependencyIndexes: file_service_user_mobile_verification_proto_depIdxs,
MessageInfos: file_service_user_mobile_verification_proto_msgTypes,
}.Build()
File_service_user_mobile_verification_proto = out.File
file_service_user_mobile_verification_proto_rawDesc = nil
file_service_user_mobile_verification_proto_goTypes = nil
file_service_user_mobile_verification_proto_depIdxs = nil
}

View File

@@ -0,0 +1,187 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.19.4
// source: service_user_mobile_verification.proto
package pb
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
UserMobileVerificationService_VerifyUserMobile_FullMethodName = "/pb.UserMobileVerificationService/verifyUserMobile"
UserMobileVerificationService_SendUserMobileVerification_FullMethodName = "/pb.UserMobileVerificationService/sendUserMobileVerification"
UserMobileVerificationService_FindLatestUserMobileVerification_FullMethodName = "/pb.UserMobileVerificationService/findLatestUserMobileVerification"
)
// UserMobileVerificationServiceClient is the client API for UserMobileVerificationService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type UserMobileVerificationServiceClient interface {
// 认证手机号码
VerifyUserMobile(ctx context.Context, in *VerifyUserMobileRequest, opts ...grpc.CallOption) (*VerifyUserMobileResponse, error)
// 发送手机号码认证
SendUserMobileVerification(ctx context.Context, in *SendUserMobileVerificationRequest, opts ...grpc.CallOption) (*SendUserMobileVerificationResponse, error)
// 查找用户正在等待激活的认证
FindLatestUserMobileVerification(ctx context.Context, in *FindLatestUserMobileVerificationRequest, opts ...grpc.CallOption) (*FindLatestUserMobileVerificationResponse, error)
}
type userMobileVerificationServiceClient struct {
cc grpc.ClientConnInterface
}
func NewUserMobileVerificationServiceClient(cc grpc.ClientConnInterface) UserMobileVerificationServiceClient {
return &userMobileVerificationServiceClient{cc}
}
func (c *userMobileVerificationServiceClient) VerifyUserMobile(ctx context.Context, in *VerifyUserMobileRequest, opts ...grpc.CallOption) (*VerifyUserMobileResponse, error) {
out := new(VerifyUserMobileResponse)
err := c.cc.Invoke(ctx, UserMobileVerificationService_VerifyUserMobile_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userMobileVerificationServiceClient) SendUserMobileVerification(ctx context.Context, in *SendUserMobileVerificationRequest, opts ...grpc.CallOption) (*SendUserMobileVerificationResponse, error) {
out := new(SendUserMobileVerificationResponse)
err := c.cc.Invoke(ctx, UserMobileVerificationService_SendUserMobileVerification_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *userMobileVerificationServiceClient) FindLatestUserMobileVerification(ctx context.Context, in *FindLatestUserMobileVerificationRequest, opts ...grpc.CallOption) (*FindLatestUserMobileVerificationResponse, error) {
out := new(FindLatestUserMobileVerificationResponse)
err := c.cc.Invoke(ctx, UserMobileVerificationService_FindLatestUserMobileVerification_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// UserMobileVerificationServiceServer is the server API for UserMobileVerificationService service.
// All implementations should embed UnimplementedUserMobileVerificationServiceServer
// for forward compatibility
type UserMobileVerificationServiceServer interface {
// 认证手机号码
VerifyUserMobile(context.Context, *VerifyUserMobileRequest) (*VerifyUserMobileResponse, error)
// 发送手机号码认证
SendUserMobileVerification(context.Context, *SendUserMobileVerificationRequest) (*SendUserMobileVerificationResponse, error)
// 查找用户正在等待激活的认证
FindLatestUserMobileVerification(context.Context, *FindLatestUserMobileVerificationRequest) (*FindLatestUserMobileVerificationResponse, error)
}
// UnimplementedUserMobileVerificationServiceServer should be embedded to have forward compatible implementations.
type UnimplementedUserMobileVerificationServiceServer struct {
}
func (UnimplementedUserMobileVerificationServiceServer) VerifyUserMobile(context.Context, *VerifyUserMobileRequest) (*VerifyUserMobileResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method VerifyUserMobile not implemented")
}
func (UnimplementedUserMobileVerificationServiceServer) SendUserMobileVerification(context.Context, *SendUserMobileVerificationRequest) (*SendUserMobileVerificationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendUserMobileVerification not implemented")
}
func (UnimplementedUserMobileVerificationServiceServer) FindLatestUserMobileVerification(context.Context, *FindLatestUserMobileVerificationRequest) (*FindLatestUserMobileVerificationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindLatestUserMobileVerification not implemented")
}
// UnsafeUserMobileVerificationServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to UserMobileVerificationServiceServer will
// result in compilation errors.
type UnsafeUserMobileVerificationServiceServer interface {
mustEmbedUnimplementedUserMobileVerificationServiceServer()
}
func RegisterUserMobileVerificationServiceServer(s grpc.ServiceRegistrar, srv UserMobileVerificationServiceServer) {
s.RegisterService(&UserMobileVerificationService_ServiceDesc, srv)
}
func _UserMobileVerificationService_VerifyUserMobile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(VerifyUserMobileRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserMobileVerificationServiceServer).VerifyUserMobile(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: UserMobileVerificationService_VerifyUserMobile_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserMobileVerificationServiceServer).VerifyUserMobile(ctx, req.(*VerifyUserMobileRequest))
}
return interceptor(ctx, in, info, handler)
}
func _UserMobileVerificationService_SendUserMobileVerification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SendUserMobileVerificationRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserMobileVerificationServiceServer).SendUserMobileVerification(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: UserMobileVerificationService_SendUserMobileVerification_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserMobileVerificationServiceServer).SendUserMobileVerification(ctx, req.(*SendUserMobileVerificationRequest))
}
return interceptor(ctx, in, info, handler)
}
func _UserMobileVerificationService_FindLatestUserMobileVerification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindLatestUserMobileVerificationRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserMobileVerificationServiceServer).FindLatestUserMobileVerification(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: UserMobileVerificationService_FindLatestUserMobileVerification_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserMobileVerificationServiceServer).FindLatestUserMobileVerification(ctx, req.(*FindLatestUserMobileVerificationRequest))
}
return interceptor(ctx, in, info, handler)
}
// UserMobileVerificationService_ServiceDesc is the grpc.ServiceDesc for UserMobileVerificationService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var UserMobileVerificationService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "pb.UserMobileVerificationService",
HandlerType: (*UserMobileVerificationServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "verifyUserMobile",
Handler: _UserMobileVerificationService_VerifyUserMobile_Handler,
},
{
MethodName: "sendUserMobileVerification",
Handler: _UserMobileVerificationService_SendUserMobileVerification_Handler,
},
{
MethodName: "findLatestUserMobileVerification",
Handler: _UserMobileVerificationService_FindLatestUserMobileVerification_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "service_user_mobile_verification.proto",
}

View File

@@ -11,10 +11,11 @@ message User {
int64 id = 1; // 用户ID int64 id = 1; // 用户ID
string username = 2; // 用户名 string username = 2; // 用户名
string fullname = 3; // 全称 string fullname = 3; // 全称
string mobile = 4; string mobile = 4; // 手机号码
string tel = 5; string tel = 5; // 联系电话
string email = 6; string email = 6; // 联系邮箱
string verifiedEmail = 20; string verifiedEmail = 20; // 已验证邮箱
string verifiedMobile = 23; // 已验证手机号码
string remark = 7; string remark = 7;
bool isOn = 8; bool isOn = 8;
int64 createdAt = 9; int64 createdAt = 9;
@@ -23,8 +24,8 @@ message User {
bool isRejected = 14; bool isRejected = 14;
string rejectReason = 15; string rejectReason = 15;
bool isDeleted = 16; bool isDeleted = 16;
bool isIndividualIdentified = 17; bool isIndividualIdentified = 17; // 是否已通过个人验证
bool isEnterpriseIdentified = 18; bool isEnterpriseIdentified = 18; // 是否已通过企业验证
string bandwidthAlgo = 21; // 带宽算法 string bandwidthAlgo = 21; // 带宽算法
string lang = 22; // 语言代号 string lang = 22; // 语言代号

View File

@@ -0,0 +1,16 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
// 手机号码认证
message UserMobileVerification {
int64 id = 1; // ID
string mobile = 2; // 手机号码
int64 userId = 3; // 用户ID
string code = 4; // 代号
int64 createdAt = 5; // 创建时间
bool isSent = 6; // 已发送
bool isVerified = 7; // 已激活
int64 expiresAt = 8; // 过期时间,动态计算而来
}

View File

@@ -0,0 +1,23 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
// 短信发送服务
service SMSSenderService {
// 发送短信
rpc sendSMS(SendSMSRequest) returns (SendSMSResponse);
}
// 发送短信
message SendSMSRequest {
string mobile = 1; // 手机号
string body = 2; // 内容
string type = 3; // 渠道类型webHook ...
bytes paramsJSON = 4; // 参数
}
message SendSMSResponse {
bool isOk = 1; // 是否成功
string result = 2; // 发送返回内容,只有失败时才会有数据
}

View File

@@ -88,6 +88,9 @@ service UserService {
// 检查邮箱是否已被使用 // 检查邮箱是否已被使用
rpc checkUserEmail(CheckUserEmailRequest) returns (CheckUserEmailResponse); rpc checkUserEmail(CheckUserEmailRequest) returns (CheckUserEmailResponse);
// 检查手机号码是否已被使用
rpc checkUserMobile(CheckUserMobileRequest) returns (CheckUserMobileResponse);
// 根据用户名查询用户绑定的邮箱 // 根据用户名查询用户绑定的邮箱
rpc findUserVerifiedEmailWithUsername(FindUserVerifiedEmailWithUsernameRequest) returns (FindUserVerifiedEmailWithUsernameResponse); rpc findUserVerifiedEmailWithUsername(FindUserVerifiedEmailWithUsernameRequest) returns (FindUserVerifiedEmailWithUsernameResponse);
} }
@@ -378,6 +381,15 @@ message CheckUserEmailResponse {
bool exists = 1; // 是否已被使用 bool exists = 1; // 是否已被使用
} }
// 检查手机号码是否已被验证
message CheckUserMobileRequest {
string mobile = 1; // 手机号码
}
message CheckUserMobileResponse {
bool exists = 1; // 是否已被使用
}
// 根据用户名查询用户绑定的邮箱 // 根据用户名查询用户绑定的邮箱
message FindUserVerifiedEmailWithUsernameRequest { message FindUserVerifiedEmailWithUsernameRequest {
string username = 1; // 用户名 string username = 1; // 用户名

View File

@@ -0,0 +1,50 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_user_mobile_verification.proto";
// 用户手机号码认证服务
service UserMobileVerificationService {
// 认证手机号码
rpc verifyUserMobile(VerifyUserMobileRequest) returns (VerifyUserMobileResponse);
// 发送手机号码认证
rpc sendUserMobileVerification(SendUserMobileVerificationRequest) returns (SendUserMobileVerificationResponse);
// 查找用户正在等待激活的认证
rpc findLatestUserMobileVerification(FindLatestUserMobileVerificationRequest) returns (FindLatestUserMobileVerificationResponse);
}
// 认证手机号码
message VerifyUserMobileRequest {
string mobile = 1; // 手机号
string code = 2; // 激活码
}
message VerifyUserMobileResponse {
int64 userId = 1; // 手机号码对应的用户ID
string mobile = 2; // 手机号码
string errorCode = 3; // 错误代号,如果为空,说明没有错误
string errorMessage = 4; // 错误信息
}
// 发送手机号码认证
message SendUserMobileVerificationRequest {
string mobile = 1; // 待验证手机号码
}
message SendUserMobileVerificationResponse {
bool isOk = 1; // 是否发送成功
string errorCode = 2; // 错误代号
}
// 查找用户正在等待激活的认证
message FindLatestUserMobileVerificationRequest {
}
message FindLatestUserMobileVerificationResponse {
UserMobileVerification userMobileVerification = 1;
}

View File

@@ -5,6 +5,9 @@ package userconfigs
const ( const (
EmailVerificationDefaultLife = 86400 * 2 // 2 days EmailVerificationDefaultLife = 86400 * 2 // 2 days
EmailResetPasswordDefaultLife = 3600 // 1 hour EmailResetPasswordDefaultLife = 3600 // 1 hour
MobileVerificationDefaultLife = 1800 // 30 minutes
MobileResetPasswordDefaultLife = 1800 // 30 minutes
) )
type UserRegisterConfig struct { type UserRegisterConfig struct {
@@ -32,6 +35,15 @@ type UserRegisterConfig struct {
Life int32 `yaml:"life" json:"life"` // 有效期 Life int32 `yaml:"life" json:"life"` // 有效期
} `yaml:"emailResetPassword" json:"emailResetPassword"` } `yaml:"emailResetPassword" json:"emailResetPassword"`
// 手机号码激活设置
MobileVerification struct {
IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用
ShowNotice bool `yaml:"showNotice" json:"showNotice"` // 提示用户未绑定
CanLogin bool `yaml:"canLogin" json:"canLogin"` // 是否可以使用激活的邮箱登录
Body string `yaml:"body" json:"body"` // 内容
Life int32 `yaml:"life" json:"life"` // 有效期
} `yaml:"mobileVerification" json:"mobileVerification"`
// CDN // CDN
CDNIsOn bool `json:"cdnIsOn"` // 是否开启CDN服务 CDNIsOn bool `json:"cdnIsOn"` // 是否开启CDN服务
ClusterId int64 `yaml:"clusterId" json:"clusterId"` // 用户创建服务集群 ClusterId int64 `yaml:"clusterId" json:"clusterId"` // 用户创建服务集群
@@ -81,6 +93,8 @@ func DefaultUserRegisterConfig() *UserRegisterConfig {
<p>${product.name} 管理团队</p> <p>${product.name} 管理团队</p>
<p><a href="${url.home}" target="_blank">${url.home}</a></p> <p><a href="${url.home}" target="_blank">${url.home}</a></p>
` `
// 短信验证码
config.MobileVerification.Body = "你的短信验证码${code}"
return config return config
} }