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

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

@@ -651,6 +651,7 @@ const (
User_LogUpdateUserPricePeriod langs.MessageCode = "user@log_update_user_price_period" // 修改计费周期为 %s
User_LogUpdateUserPriceType langs.MessageCode = "user@log_update_user_price_type" // 修改计费类型为 %s
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
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

View File

@@ -652,6 +652,7 @@ func init() {
"user@log_update_user_price_period": "修改计费周期为 %s",
"user@log_update_user_price_type": "修改计费类型为 %s",
"user@log_update_user_profile": "修改个人资料",
"user@log_update_user_sms_settings": "修改用户短信设置",
"user@log_verify_user": "审核用户:%d 结果:%s",
"user_access_key@log_create_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_sms_settings": "修改用户短信设置",
"log_update_user_global_settings": "修改用户设置",
"log_create_user": "创建用户 %d",
"log_delete_user": "删除用户 %d",

View File

@@ -25,13 +25,14 @@ type User struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
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"` // 用户名
Fullname string `protobuf:"bytes,3,opt,name=fullname,proto3" json:"fullname,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"`
Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"`
VerifiedEmail string `protobuf:"bytes,20,opt,name=verifiedEmail,proto3" json:"verifiedEmail,omitempty"`
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"` // 用户名
Fullname string `protobuf:"bytes,3,opt,name=fullname,proto3" json:"fullname,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"` // 联系电话
Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,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"`
IsOn bool `protobuf:"varint,8,opt,name=isOn,proto3" json:"isOn,omitempty"`
CreatedAt int64 `protobuf:"varint,9,opt,name=createdAt,proto3" json:"createdAt,omitempty"`
@@ -40,11 +41,11 @@ type User struct {
IsRejected bool `protobuf:"varint,14,opt,name=isRejected,proto3" json:"isRejected,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"`
IsIndividualIdentified bool `protobuf:"varint,17,opt,name=isIndividualIdentified,proto3" json:"isIndividualIdentified,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"` // 带宽算法
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认证
IsIndividualIdentified bool `protobuf:"varint,17,opt,name=isIndividualIdentified,proto3" json:"isIndividualIdentified,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"` // 带宽算法
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认证
NodeCluster *NodeCluster `protobuf:"bytes,10,opt,name=nodeCluster,proto3" json:"nodeCluster,omitempty"`
Features []*UserFeature `protobuf:"bytes,11,rep,name=features,proto3" json:"features,omitempty"`
}
@@ -130,6 +131,13 @@ func (x *User) GetVerifiedEmail() string {
return ""
}
func (x *User) GetVerifiedMobile() string {
if x != nil {
return x.VerifiedMobile
}
return ""
}
func (x *User) GetRemark() string {
if x != nil {
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,
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,
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,
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,
@@ -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,
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,
0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e,
0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x49, 0x50, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x49, 0x50, 0x12, 0x1e,
0x0a, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1e,
0x0a, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x22,
0x0a, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0f,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73,
0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18,
0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
0x12, 0x36, 0x0a, 0x16, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08,
0x52, 0x16, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 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, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64,
0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x41, 0x6c, 0x67,
0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64,
0x74, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x16,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6f, 0x74,
0x70, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70,
0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x08, 0x6f, 0x74, 0x70, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65,
0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 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,
0x12, 0x26, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4d, 0x6f, 0x62, 0x69,
0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69,
0x65, 0x64, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61,
0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b,
0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
0x69, 0x73, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
0x49, 0x50, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
0x65, 0x72, 0x65, 0x64, 0x49, 0x50, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x56, 0x65, 0x72, 0x69,
0x66, 0x69, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x56, 0x65,
0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x6a, 0x65,
0x63, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65,
0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74,
0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65,
0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69,
0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x73, 0x49, 0x6e,
0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x49, 0x6e, 0x64, 0x69,
0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 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,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08,
0x52, 0x16, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x49, 0x64,
0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x6e, 0x64,
0x77, 0x69, 0x64, 0x74, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0d, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x12, 0x12,
0x0a, 0x04, 0x6c, 0x61, 0x6e, 0x67, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x61,
0x6e, 0x67, 0x12, 0x25, 0x0a, 0x08, 0x6f, 0x74, 0x70, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x13,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52,
0x08, 0x6f, 0x74, 0x70, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x6e, 0x6f, 0x64,
0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x08,
0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
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 (

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
}
// 检查手机号码是否已被验证
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 {
state protoimpl.MessageState
@@ -2518,7 +2613,7 @@ type FindUserVerifiedEmailWithUsernameRequest struct {
func (x *FindUserVerifiedEmailWithUsernameRequest) Reset() {
*x = FindUserVerifiedEmailWithUsernameRequest{}
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.StoreMessageInfo(mi)
}
@@ -2531,7 +2626,7 @@ func (x *FindUserVerifiedEmailWithUsernameRequest) String() string {
func (*FindUserVerifiedEmailWithUsernameRequest) ProtoMessage() {}
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 {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2544,7 +2639,7 @@ func (x *FindUserVerifiedEmailWithUsernameRequest) ProtoReflect() protoreflect.M
// Deprecated: Use FindUserVerifiedEmailWithUsernameRequest.ProtoReflect.Descriptor instead.
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 {
@@ -2565,7 +2660,7 @@ type FindUserVerifiedEmailWithUsernameResponse struct {
func (x *FindUserVerifiedEmailWithUsernameResponse) Reset() {
*x = FindUserVerifiedEmailWithUsernameResponse{}
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.StoreMessageInfo(mi)
}
@@ -2578,7 +2673,7 @@ func (x *FindUserVerifiedEmailWithUsernameResponse) String() string {
func (*FindUserVerifiedEmailWithUsernameResponse) ProtoMessage() {}
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 {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2591,7 +2686,7 @@ func (x *FindUserVerifiedEmailWithUsernameResponse) ProtoReflect() protoreflect.
// Deprecated: Use FindUserVerifiedEmailWithUsernameResponse.ProtoReflect.Descriptor instead.
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 {
@@ -2618,7 +2713,7 @@ type ComposeUserDashboardResponse_DailyTrafficStat struct {
func (x *ComposeUserDashboardResponse_DailyTrafficStat) Reset() {
*x = ComposeUserDashboardResponse_DailyTrafficStat{}
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.StoreMessageInfo(mi)
}
@@ -2631,7 +2726,7 @@ func (x *ComposeUserDashboardResponse_DailyTrafficStat) String() string {
func (*ComposeUserDashboardResponse_DailyTrafficStat) ProtoMessage() {}
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 {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2708,7 +2803,7 @@ type ComposeUserDashboardResponse_DailyPeekBandwidthStat struct {
func (x *ComposeUserDashboardResponse_DailyPeekBandwidthStat) Reset() {
*x = ComposeUserDashboardResponse_DailyPeekBandwidthStat{}
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.StoreMessageInfo(mi)
}
@@ -2721,7 +2816,7 @@ func (x *ComposeUserDashboardResponse_DailyPeekBandwidthStat) String() string {
func (*ComposeUserDashboardResponse_DailyPeekBandwidthStat) ProtoMessage() {}
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 {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2763,7 +2858,7 @@ type ComposeUserGlobalBoardResponse_DailyStat struct {
func (x *ComposeUserGlobalBoardResponse_DailyStat) Reset() {
*x = ComposeUserGlobalBoardResponse_DailyStat{}
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.StoreMessageInfo(mi)
}
@@ -2776,7 +2871,7 @@ func (x *ComposeUserGlobalBoardResponse_DailyStat) String() string {
func (*ComposeUserGlobalBoardResponse_DailyStat) ProtoMessage() {}
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 {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2820,7 +2915,7 @@ type ComposeUserGlobalBoardResponse_TrafficStat struct {
func (x *ComposeUserGlobalBoardResponse_TrafficStat) Reset() {
*x = ComposeUserGlobalBoardResponse_TrafficStat{}
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.StoreMessageInfo(mi)
}
@@ -2833,7 +2928,7 @@ func (x *ComposeUserGlobalBoardResponse_TrafficStat) String() string {
func (*ComposeUserGlobalBoardResponse_TrafficStat) ProtoMessage() {}
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 {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
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,
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,
0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x46, 0x0a, 0x28, 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, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e,
0x61, 0x6d, 0x65, 0x22, 0x41, 0x0a, 0x29, 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,
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,
0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x43,
0x68, 0x65, 0x63, 0x6b, 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, 0x22, 0x31, 0x0a,
0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x62, 0x69, 0x6c, 0x65,
0x52, 0x65, 0x73, 0x70, 0x6f, 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, 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,
0x72, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08,
0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x41, 0x0a, 0x29, 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, 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 (
@@ -3371,7 +3477,7 @@ func file_service_user_proto_rawDescGZIP() []byte {
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{}{
(*CreateUserRequest)(nil), // 0: pb.CreateUserRequest
(*CreateUserResponse)(nil), // 1: pb.CreateUserResponse
@@ -3415,30 +3521,32 @@ var file_service_user_proto_goTypes = []interface{}{
(*RenewUserServersStateResponse)(nil), // 39: pb.RenewUserServersStateResponse
(*CheckUserEmailRequest)(nil), // 40: pb.CheckUserEmailRequest
(*CheckUserEmailResponse)(nil), // 41: pb.CheckUserEmailResponse
(*FindUserVerifiedEmailWithUsernameRequest)(nil), // 42: pb.FindUserVerifiedEmailWithUsernameRequest
(*FindUserVerifiedEmailWithUsernameResponse)(nil), // 43: pb.FindUserVerifiedEmailWithUsernameResponse
(*ComposeUserDashboardResponse_DailyTrafficStat)(nil), // 44: pb.ComposeUserDashboardResponse.DailyTrafficStat
(*ComposeUserDashboardResponse_DailyPeekBandwidthStat)(nil), // 45: pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat
(*ComposeUserGlobalBoardResponse_DailyStat)(nil), // 46: pb.ComposeUserGlobalBoardResponse.DailyStat
(*ComposeUserGlobalBoardResponse_TrafficStat)(nil), // 47: pb.ComposeUserGlobalBoardResponse.TrafficStat
(*User)(nil), // 48: pb.User
(*UserFeature)(nil), // 49: pb.UserFeature
(*NodeValue)(nil), // 50: pb.NodeValue
(*RPCSuccess)(nil), // 51: pb.RPCSuccess
(*RPCCountResponse)(nil), // 52: pb.RPCCountResponse
(*CheckUserMobileRequest)(nil), // 42: pb.CheckUserMobileRequest
(*CheckUserMobileResponse)(nil), // 43: pb.CheckUserMobileResponse
(*FindUserVerifiedEmailWithUsernameRequest)(nil), // 44: pb.FindUserVerifiedEmailWithUsernameRequest
(*FindUserVerifiedEmailWithUsernameResponse)(nil), // 45: pb.FindUserVerifiedEmailWithUsernameResponse
(*ComposeUserDashboardResponse_DailyTrafficStat)(nil), // 46: pb.ComposeUserDashboardResponse.DailyTrafficStat
(*ComposeUserDashboardResponse_DailyPeekBandwidthStat)(nil), // 47: pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat
(*ComposeUserGlobalBoardResponse_DailyStat)(nil), // 48: pb.ComposeUserGlobalBoardResponse.DailyStat
(*ComposeUserGlobalBoardResponse_TrafficStat)(nil), // 49: pb.ComposeUserGlobalBoardResponse.TrafficStat
(*User)(nil), // 50: pb.User
(*UserFeature)(nil), // 51: pb.UserFeature
(*NodeValue)(nil), // 52: pb.NodeValue
(*RPCSuccess)(nil), // 53: pb.RPCSuccess
(*RPCCountResponse)(nil), // 54: pb.RPCCountResponse
}
var file_service_user_proto_depIdxs = []int32{
48, // 0: pb.ListEnabledUsersResponse.users:type_name -> pb.User
48, // 1: pb.FindEnabledUserResponse.user:type_name -> pb.User
44, // 2: pb.ComposeUserDashboardResponse.dailyTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyTrafficStat
45, // 3: pb.ComposeUserDashboardResponse.dailyPeekBandwidthStats:type_name -> pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat
49, // 4: pb.FindUserFeaturesResponse.features:type_name -> pb.UserFeature
49, // 5: pb.FindAllUserFeatureDefinitionsResponse.features:type_name -> pb.UserFeature
46, // 6: pb.ComposeUserGlobalBoardResponse.dailyStats:type_name -> pb.ComposeUserGlobalBoardResponse.DailyStat
50, // 7: pb.ComposeUserGlobalBoardResponse.cpuNodeValues:type_name -> pb.NodeValue
50, // 8: pb.ComposeUserGlobalBoardResponse.memoryNodeValues:type_name -> pb.NodeValue
50, // 9: pb.ComposeUserGlobalBoardResponse.loadNodeValues:type_name -> pb.NodeValue
47, // 10: pb.ComposeUserGlobalBoardResponse.topTrafficStats:type_name -> pb.ComposeUserGlobalBoardResponse.TrafficStat
50, // 0: pb.ListEnabledUsersResponse.users:type_name -> pb.User
50, // 1: pb.FindEnabledUserResponse.user:type_name -> pb.User
46, // 2: pb.ComposeUserDashboardResponse.dailyTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyTrafficStat
47, // 3: pb.ComposeUserDashboardResponse.dailyPeekBandwidthStats:type_name -> pb.ComposeUserDashboardResponse.DailyPeekBandwidthStat
51, // 4: pb.FindUserFeaturesResponse.features:type_name -> pb.UserFeature
51, // 5: pb.FindAllUserFeatureDefinitionsResponse.features:type_name -> pb.UserFeature
48, // 6: pb.ComposeUserGlobalBoardResponse.dailyStats:type_name -> pb.ComposeUserGlobalBoardResponse.DailyStat
52, // 7: pb.ComposeUserGlobalBoardResponse.cpuNodeValues:type_name -> pb.NodeValue
52, // 8: pb.ComposeUserGlobalBoardResponse.memoryNodeValues:type_name -> pb.NodeValue
52, // 9: pb.ComposeUserGlobalBoardResponse.loadNodeValues:type_name -> pb.NodeValue
49, // 10: pb.ComposeUserGlobalBoardResponse.topTrafficStats:type_name -> pb.ComposeUserGlobalBoardResponse.TrafficStat
0, // 11: pb.UserService.createUser:input_type -> pb.CreateUserRequest
2, // 12: pb.UserService.registerUser:input_type -> pb.RegisterUserRequest
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
38, // 35: pb.UserService.renewUserServersState:input_type -> pb.RenewUserServersStateRequest
40, // 36: pb.UserService.checkUserEmail:input_type -> pb.CheckUserEmailRequest
42, // 37: pb.UserService.findUserVerifiedEmailWithUsername:input_type -> pb.FindUserVerifiedEmailWithUsernameRequest
1, // 38: pb.UserService.createUser:output_type -> pb.CreateUserResponse
3, // 39: pb.UserService.registerUser:output_type -> pb.RegisterUserResponse
51, // 40: pb.UserService.verifyUser:output_type -> pb.RPCSuccess
51, // 41: pb.UserService.updateUser:output_type -> pb.RPCSuccess
51, // 42: pb.UserService.deleteUser:output_type -> pb.RPCSuccess
52, // 43: pb.UserService.countAllEnabledUsers:output_type -> pb.RPCCountResponse
9, // 44: pb.UserService.listEnabledUsers:output_type -> pb.ListEnabledUsersResponse
11, // 45: pb.UserService.findEnabledUser:output_type -> pb.FindEnabledUserResponse
13, // 46: pb.UserService.checkUserUsername:output_type -> pb.CheckUserUsernameResponse
15, // 47: pb.UserService.loginUser:output_type -> pb.LoginUserResponse
51, // 48: pb.UserService.updateUserInfo:output_type -> pb.RPCSuccess
51, // 49: pb.UserService.updateUserLogin:output_type -> pb.RPCSuccess
19, // 50: pb.UserService.composeUserDashboard:output_type -> pb.ComposeUserDashboardResponse
21, // 51: pb.UserService.findUserNodeClusterId:output_type -> pb.FindUserNodeClusterIdResponse
51, // 52: pb.UserService.updateUserFeatures:output_type -> pb.RPCSuccess
51, // 53: pb.UserService.updateAllUsersFeatures:output_type -> pb.RPCSuccess
25, // 54: pb.UserService.findUserFeatures:output_type -> pb.FindUserFeaturesResponse
27, // 55: pb.UserService.findAllUserFeatureDefinitions:output_type -> pb.FindAllUserFeatureDefinitionsResponse
29, // 56: pb.UserService.composeUserGlobalBoard:output_type -> pb.ComposeUserGlobalBoardResponse
31, // 57: pb.UserService.checkUserOTPWithUsername:output_type -> pb.CheckUserOTPWithUsernameResponse
33, // 58: pb.UserService.findUserPriceInfo:output_type -> pb.FindUserPriceInfoResponse
51, // 59: pb.UserService.updateUserPriceType:output_type -> pb.RPCSuccess
51, // 60: pb.UserService.updateUserPricePeriod:output_type -> pb.RPCSuccess
37, // 61: pb.UserService.checkUserServersState:output_type -> pb.CheckUserServersStateResponse
39, // 62: pb.UserService.renewUserServersState:output_type -> pb.RenewUserServersStateResponse
41, // 63: pb.UserService.checkUserEmail:output_type -> pb.CheckUserEmailResponse
43, // 64: pb.UserService.findUserVerifiedEmailWithUsername:output_type -> pb.FindUserVerifiedEmailWithUsernameResponse
38, // [38:65] is the sub-list for method output_type
11, // [11:38] is the sub-list for method input_type
42, // 37: pb.UserService.checkUserMobile:input_type -> pb.CheckUserMobileRequest
44, // 38: pb.UserService.findUserVerifiedEmailWithUsername:input_type -> pb.FindUserVerifiedEmailWithUsernameRequest
1, // 39: pb.UserService.createUser:output_type -> pb.CreateUserResponse
3, // 40: pb.UserService.registerUser:output_type -> pb.RegisterUserResponse
53, // 41: pb.UserService.verifyUser:output_type -> pb.RPCSuccess
53, // 42: pb.UserService.updateUser:output_type -> pb.RPCSuccess
53, // 43: pb.UserService.deleteUser:output_type -> pb.RPCSuccess
54, // 44: pb.UserService.countAllEnabledUsers:output_type -> pb.RPCCountResponse
9, // 45: pb.UserService.listEnabledUsers:output_type -> pb.ListEnabledUsersResponse
11, // 46: pb.UserService.findEnabledUser:output_type -> pb.FindEnabledUserResponse
13, // 47: pb.UserService.checkUserUsername:output_type -> pb.CheckUserUsernameResponse
15, // 48: pb.UserService.loginUser:output_type -> pb.LoginUserResponse
53, // 49: pb.UserService.updateUserInfo:output_type -> pb.RPCSuccess
53, // 50: pb.UserService.updateUserLogin:output_type -> pb.RPCSuccess
19, // 51: pb.UserService.composeUserDashboard:output_type -> pb.ComposeUserDashboardResponse
21, // 52: pb.UserService.findUserNodeClusterId:output_type -> pb.FindUserNodeClusterIdResponse
53, // 53: pb.UserService.updateUserFeatures:output_type -> pb.RPCSuccess
53, // 54: pb.UserService.updateAllUsersFeatures:output_type -> pb.RPCSuccess
25, // 55: pb.UserService.findUserFeatures:output_type -> pb.FindUserFeaturesResponse
27, // 56: pb.UserService.findAllUserFeatureDefinitions:output_type -> pb.FindAllUserFeatureDefinitionsResponse
29, // 57: pb.UserService.composeUserGlobalBoard:output_type -> pb.ComposeUserGlobalBoardResponse
31, // 58: pb.UserService.checkUserOTPWithUsername:output_type -> pb.CheckUserOTPWithUsernameResponse
33, // 59: pb.UserService.findUserPriceInfo:output_type -> pb.FindUserPriceInfoResponse
53, // 60: pb.UserService.updateUserPriceType:output_type -> pb.RPCSuccess
53, // 61: pb.UserService.updateUserPricePeriod:output_type -> pb.RPCSuccess
37, // 62: pb.UserService.checkUserServersState:output_type -> pb.CheckUserServersStateResponse
39, // 63: pb.UserService.renewUserServersState:output_type -> pb.RenewUserServersStateResponse
41, // 64: pb.UserService.checkUserEmail:output_type -> pb.CheckUserEmailResponse
43, // 65: pb.UserService.checkUserMobile:output_type -> pb.CheckUserMobileResponse
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 extendee
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{} {
switch v := v.(*FindUserVerifiedEmailWithUsernameRequest); i {
switch v := v.(*CheckUserMobileRequest); i {
case 0:
return &v.state
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{} {
switch v := v.(*FindUserVerifiedEmailWithUsernameResponse); i {
switch v := v.(*CheckUserMobileResponse); i {
case 0:
return &v.state
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{} {
switch v := v.(*ComposeUserDashboardResponse_DailyTrafficStat); i {
switch v := v.(*FindUserVerifiedEmailWithUsernameRequest); i {
case 0:
return &v.state
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{} {
switch v := v.(*ComposeUserDashboardResponse_DailyPeekBandwidthStat); i {
switch v := v.(*FindUserVerifiedEmailWithUsernameResponse); i {
case 0:
return &v.state
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{} {
switch v := v.(*ComposeUserGlobalBoardResponse_DailyStat); i {
switch v := v.(*ComposeUserDashboardResponse_DailyTrafficStat); i {
case 0:
return &v.state
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{} {
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 {
case 0:
return &v.state
@@ -4093,7 +4227,7 @@ func file_service_user_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_service_user_proto_rawDesc,
NumEnums: 0,
NumMessages: 48,
NumMessages: 50,
NumExtensions: 0,
NumServices: 1,
},

View File

@@ -45,6 +45,7 @@ const (
UserService_CheckUserServersState_FullMethodName = "/pb.UserService/checkUserServersState"
UserService_RenewUserServersState_FullMethodName = "/pb.UserService/renewUserServersState"
UserService_CheckUserEmail_FullMethodName = "/pb.UserService/checkUserEmail"
UserService_CheckUserMobile_FullMethodName = "/pb.UserService/checkUserMobile"
UserService_FindUserVerifiedEmailWithUsername_FullMethodName = "/pb.UserService/findUserVerifiedEmailWithUsername"
)
@@ -104,6 +105,8 @@ type UserServiceClient interface {
RenewUserServersState(ctx context.Context, in *RenewUserServersStateRequest, opts ...grpc.CallOption) (*RenewUserServersStateResponse, 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)
}
@@ -350,6 +353,15 @@ func (c *userServiceClient) CheckUserEmail(ctx context.Context, in *CheckUserEma
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) {
out := new(FindUserVerifiedEmailWithUsernameResponse)
err := c.cc.Invoke(ctx, UserService_FindUserVerifiedEmailWithUsername_FullMethodName, in, out, opts...)
@@ -415,6 +427,8 @@ type UserServiceServer interface {
RenewUserServersState(context.Context, *RenewUserServersStateRequest) (*RenewUserServersStateResponse, error)
// 检查邮箱是否已被使用
CheckUserEmail(context.Context, *CheckUserEmailRequest) (*CheckUserEmailResponse, error)
// 检查手机号码是否已被使用
CheckUserMobile(context.Context, *CheckUserMobileRequest) (*CheckUserMobileResponse, 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) {
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) {
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)
}
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) {
in := new(FindUserVerifiedEmailWithUsernameRequest)
if err := dec(in); err != nil {
@@ -1113,6 +1148,10 @@ var UserService_ServiceDesc = grpc.ServiceDesc{
MethodName: "checkUserEmail",
Handler: _UserService_CheckUserEmail_Handler,
},
{
MethodName: "checkUserMobile",
Handler: _UserService_CheckUserMobile_Handler,
},
{
MethodName: "findUserVerifiedEmailWithUsername",
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
string username = 2; // 用户名
string fullname = 3; // 全称
string mobile = 4;
string tel = 5;
string email = 6;
string verifiedEmail = 20;
string mobile = 4; // 手机号码
string tel = 5; // 联系电话
string email = 6; // 联系邮箱
string verifiedEmail = 20; // 已验证邮箱
string verifiedMobile = 23; // 已验证手机号码
string remark = 7;
bool isOn = 8;
int64 createdAt = 9;
@@ -23,8 +24,8 @@ message User {
bool isRejected = 14;
string rejectReason = 15;
bool isDeleted = 16;
bool isIndividualIdentified = 17;
bool isEnterpriseIdentified = 18;
bool isIndividualIdentified = 17; // 是否已通过个人验证
bool isEnterpriseIdentified = 18; // 是否已通过企业验证
string bandwidthAlgo = 21; // 带宽算法
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 checkUserMobile(CheckUserMobileRequest) returns (CheckUserMobileResponse);
// 根据用户名查询用户绑定的邮箱
rpc findUserVerifiedEmailWithUsername(FindUserVerifiedEmailWithUsernameRequest) returns (FindUserVerifiedEmailWithUsernameResponse);
}
@@ -378,6 +381,15 @@ message CheckUserEmailResponse {
bool exists = 1; // 是否已被使用
}
// 检查手机号码是否已被验证
message CheckUserMobileRequest {
string mobile = 1; // 手机号码
}
message CheckUserMobileResponse {
bool exists = 1; // 是否已被使用
}
// 根据用户名查询用户绑定的邮箱
message FindUserVerifiedEmailWithUsernameRequest {
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 (
EmailVerificationDefaultLife = 86400 * 2 // 2 days
EmailResetPasswordDefaultLife = 3600 // 1 hour
MobileVerificationDefaultLife = 1800 // 30 minutes
MobileResetPasswordDefaultLife = 1800 // 30 minutes
)
type UserRegisterConfig struct {
@@ -32,6 +35,15 @@ type UserRegisterConfig struct {
Life int32 `yaml:"life" json:"life"` // 有效期
} `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
CDNIsOn bool `json:"cdnIsOn"` // 是否开启CDN服务
ClusterId int64 `yaml:"clusterId" json:"clusterId"` // 用户创建服务集群
@@ -81,6 +93,8 @@ func DefaultUserRegisterConfig() *UserRegisterConfig {
<p>${product.name} 管理团队</p>
<p><a href="${url.home}" target="_blank">${url.home}</a></p>
`
// 短信验证码
config.MobileVerification.Body = "你的短信验证码${code}"
return config
}