From 052efe697d5e035ad3846302b4f270fe93b72e89 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Wed, 5 Jan 2022 10:44:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=94=A8=E6=88=B7=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/rpc/pb/model_user.pb.go | 81 +- pkg/rpc/pb/service_user.pb.go | 1189 ++++++++++++++--------- pkg/rpc/protos/models/model_user.proto | 5 + pkg/rpc/protos/service_user.proto | 26 + pkg/systemconfigs/settings.go | 3 + pkg/userconfigs/user_features.go | 12 +- pkg/userconfigs/user_register_config.go | 27 + 7 files changed, 882 insertions(+), 461 deletions(-) create mode 100644 pkg/userconfigs/user_register_config.go diff --git a/pkg/rpc/pb/model_user.pb.go b/pkg/rpc/pb/model_user.pb.go index 1bf7eaa..4d24b90 100644 --- a/pkg/rpc/pb/model_user.pb.go +++ b/pkg/rpc/pb/model_user.pb.go @@ -30,17 +30,21 @@ type User struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - Fullname string `protobuf:"bytes,3,opt,name=fullname,proto3" json:"fullname,omitempty"` - 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"` - 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"` - NodeCluster *NodeCluster `protobuf:"bytes,10,opt,name=nodeCluster,proto3" json:"nodeCluster,omitempty"` - Features []*UserFeature `protobuf:"bytes,11,rep,name=features,proto3" json:"features,omitempty"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Fullname string `protobuf:"bytes,3,opt,name=fullname,proto3" json:"fullname,omitempty"` + 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"` + 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"` + RegisteredIP string `protobuf:"bytes,12,opt,name=registeredIP,proto3" json:"registeredIP,omitempty"` + IsVerified bool `protobuf:"varint,13,opt,name=isVerified,proto3" json:"isVerified,omitempty"` + IsRejected bool `protobuf:"varint,14,opt,name=isRejected,proto3" json:"isRejected,omitempty"` + RejectReason string `protobuf:"bytes,15,opt,name=rejectReason,proto3" json:"rejectReason,omitempty"` + NodeCluster *NodeCluster `protobuf:"bytes,10,opt,name=nodeCluster,proto3" json:"nodeCluster,omitempty"` + Features []*UserFeature `protobuf:"bytes,11,rep,name=features,proto3" json:"features,omitempty"` } func (x *User) Reset() { @@ -138,6 +142,34 @@ func (x *User) GetCreatedAt() int64 { return 0 } +func (x *User) GetRegisteredIP() string { + if x != nil { + return x.RegisteredIP + } + return "" +} + +func (x *User) GetIsVerified() bool { + if x != nil { + return x.IsVerified + } + return false +} + +func (x *User) GetIsRejected() bool { + if x != nil { + return x.IsRejected + } + return false +} + +func (x *User) GetRejectReason() string { + if x != nil { + return x.RejectReason + } + return "" +} + func (x *User) GetNodeCluster() *NodeCluster { if x != nil { return x.NodeCluster @@ -161,7 +193,7 @@ var file_models_model_user_proto_rawDesc = []byte{ 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 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, 0x22, - 0xb8, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0xc0, 0x03, 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, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, @@ -174,14 +206,23 @@ var file_models_model_user_proto_rawDesc = []byte{ 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, 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, + 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, 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 ( diff --git a/pkg/rpc/pb/service_user.pb.go b/pkg/rpc/pb/service_user.pb.go index eb1052d..4585604 100644 --- a/pkg/rpc/pb/service_user.pb.go +++ b/pkg/rpc/pb/service_user.pb.go @@ -188,6 +188,166 @@ func (x *CreateUserResponse) GetUserId() int64 { return 0 } +// 注册用户 +type RegisterUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` + Mobile string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"` + Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"` + Fullname string `protobuf:"bytes,5,opt,name=fullname,proto3" json:"fullname,omitempty"` + Ip string `protobuf:"bytes,6,opt,name=ip,proto3" json:"ip,omitempty"` + Source string `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"` +} + +func (x *RegisterUserRequest) Reset() { + *x = RegisterUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_service_user_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterUserRequest) ProtoMessage() {} + +func (x *RegisterUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_service_user_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 RegisterUserRequest.ProtoReflect.Descriptor instead. +func (*RegisterUserRequest) Descriptor() ([]byte, []int) { + return file_service_user_proto_rawDescGZIP(), []int{2} +} + +func (x *RegisterUserRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *RegisterUserRequest) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *RegisterUserRequest) GetMobile() string { + if x != nil { + return x.Mobile + } + return "" +} + +func (x *RegisterUserRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *RegisterUserRequest) GetFullname() string { + if x != nil { + return x.Fullname + } + return "" +} + +func (x *RegisterUserRequest) GetIp() string { + if x != nil { + return x.Ip + } + return "" +} + +func (x *RegisterUserRequest) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +// 审核用户 +type VerifyUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + IsRejected bool `protobuf:"varint,2,opt,name=isRejected,proto3" json:"isRejected,omitempty"` + RejectReason string `protobuf:"bytes,3,opt,name=rejectReason,proto3" json:"rejectReason,omitempty"` +} + +func (x *VerifyUserRequest) Reset() { + *x = VerifyUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_service_user_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VerifyUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyUserRequest) ProtoMessage() {} + +func (x *VerifyUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_service_user_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 VerifyUserRequest.ProtoReflect.Descriptor instead. +func (*VerifyUserRequest) Descriptor() ([]byte, []int) { + return file_service_user_proto_rawDescGZIP(), []int{3} +} + +func (x *VerifyUserRequest) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *VerifyUserRequest) GetIsRejected() bool { + if x != nil { + return x.IsRejected + } + return false +} + +func (x *VerifyUserRequest) GetRejectReason() string { + if x != nil { + return x.RejectReason + } + return "" +} + // 修改用户 type UpdateUserRequest struct { state protoimpl.MessageState @@ -209,7 +369,7 @@ type UpdateUserRequest struct { func (x *UpdateUserRequest) Reset() { *x = UpdateUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[2] + mi := &file_service_user_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -222,7 +382,7 @@ func (x *UpdateUserRequest) String() string { func (*UpdateUserRequest) ProtoMessage() {} func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[2] + mi := &file_service_user_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -235,7 +395,7 @@ func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserRequest.ProtoReflect.Descriptor instead. func (*UpdateUserRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{2} + return file_service_user_proto_rawDescGZIP(), []int{4} } func (x *UpdateUserRequest) GetUserId() int64 { @@ -320,7 +480,7 @@ type DeleteUserRequest struct { func (x *DeleteUserRequest) Reset() { *x = DeleteUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[3] + mi := &file_service_user_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -333,7 +493,7 @@ func (x *DeleteUserRequest) String() string { func (*DeleteUserRequest) ProtoMessage() {} func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[3] + mi := &file_service_user_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -346,7 +506,7 @@ func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. func (*DeleteUserRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{3} + return file_service_user_proto_rawDescGZIP(), []int{5} } func (x *DeleteUserRequest) GetUserId() int64 { @@ -368,7 +528,7 @@ type CountAllEnabledUsersRequest struct { func (x *CountAllEnabledUsersRequest) Reset() { *x = CountAllEnabledUsersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[4] + mi := &file_service_user_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -381,7 +541,7 @@ func (x *CountAllEnabledUsersRequest) String() string { func (*CountAllEnabledUsersRequest) ProtoMessage() {} func (x *CountAllEnabledUsersRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[4] + mi := &file_service_user_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -394,7 +554,7 @@ func (x *CountAllEnabledUsersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CountAllEnabledUsersRequest.ProtoReflect.Descriptor instead. func (*CountAllEnabledUsersRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{4} + return file_service_user_proto_rawDescGZIP(), []int{6} } func (x *CountAllEnabledUsersRequest) GetKeyword() string { @@ -418,7 +578,7 @@ type ListEnabledUsersRequest struct { func (x *ListEnabledUsersRequest) Reset() { *x = ListEnabledUsersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[5] + mi := &file_service_user_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -431,7 +591,7 @@ func (x *ListEnabledUsersRequest) String() string { func (*ListEnabledUsersRequest) ProtoMessage() {} func (x *ListEnabledUsersRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[5] + mi := &file_service_user_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -444,7 +604,7 @@ func (x *ListEnabledUsersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEnabledUsersRequest.ProtoReflect.Descriptor instead. func (*ListEnabledUsersRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{5} + return file_service_user_proto_rawDescGZIP(), []int{7} } func (x *ListEnabledUsersRequest) GetKeyword() string { @@ -479,7 +639,7 @@ type ListEnabledUsersResponse struct { func (x *ListEnabledUsersResponse) Reset() { *x = ListEnabledUsersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[6] + mi := &file_service_user_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -492,7 +652,7 @@ func (x *ListEnabledUsersResponse) String() string { func (*ListEnabledUsersResponse) ProtoMessage() {} func (x *ListEnabledUsersResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[6] + mi := &file_service_user_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -505,7 +665,7 @@ func (x *ListEnabledUsersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEnabledUsersResponse.ProtoReflect.Descriptor instead. func (*ListEnabledUsersResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{6} + return file_service_user_proto_rawDescGZIP(), []int{8} } func (x *ListEnabledUsersResponse) GetUsers() []*User { @@ -527,7 +687,7 @@ type FindEnabledUserRequest struct { func (x *FindEnabledUserRequest) Reset() { *x = FindEnabledUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[7] + mi := &file_service_user_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -540,7 +700,7 @@ func (x *FindEnabledUserRequest) String() string { func (*FindEnabledUserRequest) ProtoMessage() {} func (x *FindEnabledUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[7] + mi := &file_service_user_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -553,7 +713,7 @@ func (x *FindEnabledUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindEnabledUserRequest.ProtoReflect.Descriptor instead. func (*FindEnabledUserRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{7} + return file_service_user_proto_rawDescGZIP(), []int{9} } func (x *FindEnabledUserRequest) GetUserId() int64 { @@ -574,7 +734,7 @@ type FindEnabledUserResponse struct { func (x *FindEnabledUserResponse) Reset() { *x = FindEnabledUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[8] + mi := &file_service_user_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -587,7 +747,7 @@ func (x *FindEnabledUserResponse) String() string { func (*FindEnabledUserResponse) ProtoMessage() {} func (x *FindEnabledUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[8] + mi := &file_service_user_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -600,7 +760,7 @@ func (x *FindEnabledUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindEnabledUserResponse.ProtoReflect.Descriptor instead. func (*FindEnabledUserResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{8} + return file_service_user_proto_rawDescGZIP(), []int{10} } func (x *FindEnabledUserResponse) GetUser() *User { @@ -623,7 +783,7 @@ type CheckUserUsernameRequest struct { func (x *CheckUserUsernameRequest) Reset() { *x = CheckUserUsernameRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[9] + mi := &file_service_user_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -636,7 +796,7 @@ func (x *CheckUserUsernameRequest) String() string { func (*CheckUserUsernameRequest) ProtoMessage() {} func (x *CheckUserUsernameRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[9] + mi := &file_service_user_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -649,7 +809,7 @@ func (x *CheckUserUsernameRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckUserUsernameRequest.ProtoReflect.Descriptor instead. func (*CheckUserUsernameRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{9} + return file_service_user_proto_rawDescGZIP(), []int{11} } func (x *CheckUserUsernameRequest) GetUserId() int64 { @@ -677,7 +837,7 @@ type CheckUserUsernameResponse struct { func (x *CheckUserUsernameResponse) Reset() { *x = CheckUserUsernameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[10] + mi := &file_service_user_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -690,7 +850,7 @@ func (x *CheckUserUsernameResponse) String() string { func (*CheckUserUsernameResponse) ProtoMessage() {} func (x *CheckUserUsernameResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[10] + mi := &file_service_user_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -703,7 +863,7 @@ func (x *CheckUserUsernameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckUserUsernameResponse.ProtoReflect.Descriptor instead. func (*CheckUserUsernameResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{10} + return file_service_user_proto_rawDescGZIP(), []int{12} } func (x *CheckUserUsernameResponse) GetExists() bool { @@ -726,7 +886,7 @@ type LoginUserRequest struct { func (x *LoginUserRequest) Reset() { *x = LoginUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[11] + mi := &file_service_user_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -739,7 +899,7 @@ func (x *LoginUserRequest) String() string { func (*LoginUserRequest) ProtoMessage() {} func (x *LoginUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[11] + mi := &file_service_user_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -752,7 +912,7 @@ func (x *LoginUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginUserRequest.ProtoReflect.Descriptor instead. func (*LoginUserRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{11} + return file_service_user_proto_rawDescGZIP(), []int{13} } func (x *LoginUserRequest) GetUsername() string { @@ -782,7 +942,7 @@ type LoginUserResponse struct { func (x *LoginUserResponse) Reset() { *x = LoginUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[12] + mi := &file_service_user_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -795,7 +955,7 @@ func (x *LoginUserResponse) String() string { func (*LoginUserResponse) ProtoMessage() {} func (x *LoginUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[12] + mi := &file_service_user_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -808,7 +968,7 @@ func (x *LoginUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LoginUserResponse.ProtoReflect.Descriptor instead. func (*LoginUserResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{12} + return file_service_user_proto_rawDescGZIP(), []int{14} } func (x *LoginUserResponse) GetUserId() int64 { @@ -840,12 +1000,14 @@ type UpdateUserInfoRequest struct { UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` Fullname string `protobuf:"bytes,2,opt,name=fullname,proto3" json:"fullname,omitempty"` + Mobile string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"` + Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"` } func (x *UpdateUserInfoRequest) Reset() { *x = UpdateUserInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[13] + mi := &file_service_user_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -858,7 +1020,7 @@ func (x *UpdateUserInfoRequest) String() string { func (*UpdateUserInfoRequest) ProtoMessage() {} func (x *UpdateUserInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[13] + mi := &file_service_user_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -871,7 +1033,7 @@ func (x *UpdateUserInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserInfoRequest.ProtoReflect.Descriptor instead. func (*UpdateUserInfoRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{13} + return file_service_user_proto_rawDescGZIP(), []int{15} } func (x *UpdateUserInfoRequest) GetUserId() int64 { @@ -888,6 +1050,20 @@ func (x *UpdateUserInfoRequest) GetFullname() string { return "" } +func (x *UpdateUserInfoRequest) GetMobile() string { + if x != nil { + return x.Mobile + } + return "" +} + +func (x *UpdateUserInfoRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + // 修改用户登录信息 type UpdateUserLoginRequest struct { state protoimpl.MessageState @@ -902,7 +1078,7 @@ type UpdateUserLoginRequest struct { func (x *UpdateUserLoginRequest) Reset() { *x = UpdateUserLoginRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[14] + mi := &file_service_user_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -915,7 +1091,7 @@ func (x *UpdateUserLoginRequest) String() string { func (*UpdateUserLoginRequest) ProtoMessage() {} func (x *UpdateUserLoginRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[14] + mi := &file_service_user_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -928,7 +1104,7 @@ func (x *UpdateUserLoginRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserLoginRequest.ProtoReflect.Descriptor instead. func (*UpdateUserLoginRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{14} + return file_service_user_proto_rawDescGZIP(), []int{16} } func (x *UpdateUserLoginRequest) GetUserId() int64 { @@ -964,7 +1140,7 @@ type ComposeUserDashboardRequest struct { func (x *ComposeUserDashboardRequest) Reset() { *x = ComposeUserDashboardRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[15] + mi := &file_service_user_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -977,7 +1153,7 @@ func (x *ComposeUserDashboardRequest) String() string { func (*ComposeUserDashboardRequest) ProtoMessage() {} func (x *ComposeUserDashboardRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[15] + mi := &file_service_user_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -990,7 +1166,7 @@ func (x *ComposeUserDashboardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ComposeUserDashboardRequest.ProtoReflect.Descriptor instead. func (*ComposeUserDashboardRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{15} + return file_service_user_proto_rawDescGZIP(), []int{17} } func (x *ComposeUserDashboardRequest) GetUserId() int64 { @@ -1017,7 +1193,7 @@ type ComposeUserDashboardResponse struct { func (x *ComposeUserDashboardResponse) Reset() { *x = ComposeUserDashboardResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[16] + mi := &file_service_user_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1030,7 +1206,7 @@ func (x *ComposeUserDashboardResponse) String() string { func (*ComposeUserDashboardResponse) ProtoMessage() {} func (x *ComposeUserDashboardResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[16] + mi := &file_service_user_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1043,7 +1219,7 @@ func (x *ComposeUserDashboardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ComposeUserDashboardResponse.ProtoReflect.Descriptor instead. func (*ComposeUserDashboardResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{16} + return file_service_user_proto_rawDescGZIP(), []int{18} } func (x *ComposeUserDashboardResponse) GetCountServers() int64 { @@ -1107,7 +1283,7 @@ type FindUserNodeClusterIdRequest struct { func (x *FindUserNodeClusterIdRequest) Reset() { *x = FindUserNodeClusterIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[17] + mi := &file_service_user_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1120,7 +1296,7 @@ func (x *FindUserNodeClusterIdRequest) String() string { func (*FindUserNodeClusterIdRequest) ProtoMessage() {} func (x *FindUserNodeClusterIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[17] + mi := &file_service_user_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1133,7 +1309,7 @@ func (x *FindUserNodeClusterIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserNodeClusterIdRequest.ProtoReflect.Descriptor instead. func (*FindUserNodeClusterIdRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{17} + return file_service_user_proto_rawDescGZIP(), []int{19} } func (x *FindUserNodeClusterIdRequest) GetUserId() int64 { @@ -1154,7 +1330,7 @@ type FindUserNodeClusterIdResponse struct { func (x *FindUserNodeClusterIdResponse) Reset() { *x = FindUserNodeClusterIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[18] + mi := &file_service_user_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1167,7 +1343,7 @@ func (x *FindUserNodeClusterIdResponse) String() string { func (*FindUserNodeClusterIdResponse) ProtoMessage() {} func (x *FindUserNodeClusterIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[18] + mi := &file_service_user_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1180,7 +1356,7 @@ func (x *FindUserNodeClusterIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserNodeClusterIdResponse.ProtoReflect.Descriptor instead. func (*FindUserNodeClusterIdResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{18} + return file_service_user_proto_rawDescGZIP(), []int{20} } func (x *FindUserNodeClusterIdResponse) GetNodeClusterId() int64 { @@ -1203,7 +1379,7 @@ type UpdateUserFeaturesRequest struct { func (x *UpdateUserFeaturesRequest) Reset() { *x = UpdateUserFeaturesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[19] + mi := &file_service_user_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1392,7 @@ func (x *UpdateUserFeaturesRequest) String() string { func (*UpdateUserFeaturesRequest) ProtoMessage() {} func (x *UpdateUserFeaturesRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[19] + mi := &file_service_user_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,7 +1405,7 @@ func (x *UpdateUserFeaturesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserFeaturesRequest.ProtoReflect.Descriptor instead. func (*UpdateUserFeaturesRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{19} + return file_service_user_proto_rawDescGZIP(), []int{21} } func (x *UpdateUserFeaturesRequest) GetUserId() int64 { @@ -1258,7 +1434,7 @@ type FindUserFeaturesRequest struct { func (x *FindUserFeaturesRequest) Reset() { *x = FindUserFeaturesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[20] + mi := &file_service_user_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1271,7 +1447,7 @@ func (x *FindUserFeaturesRequest) String() string { func (*FindUserFeaturesRequest) ProtoMessage() {} func (x *FindUserFeaturesRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[20] + mi := &file_service_user_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1284,7 +1460,7 @@ func (x *FindUserFeaturesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserFeaturesRequest.ProtoReflect.Descriptor instead. func (*FindUserFeaturesRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{20} + return file_service_user_proto_rawDescGZIP(), []int{22} } func (x *FindUserFeaturesRequest) GetUserId() int64 { @@ -1305,7 +1481,7 @@ type FindUserFeaturesResponse struct { func (x *FindUserFeaturesResponse) Reset() { *x = FindUserFeaturesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[21] + mi := &file_service_user_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1318,7 +1494,7 @@ func (x *FindUserFeaturesResponse) String() string { func (*FindUserFeaturesResponse) ProtoMessage() {} func (x *FindUserFeaturesResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[21] + mi := &file_service_user_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1331,7 +1507,7 @@ func (x *FindUserFeaturesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindUserFeaturesResponse.ProtoReflect.Descriptor instead. func (*FindUserFeaturesResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{21} + return file_service_user_proto_rawDescGZIP(), []int{23} } func (x *FindUserFeaturesResponse) GetFeatures() []*UserFeature { @@ -1351,7 +1527,7 @@ type FindAllUserFeatureDefinitionsRequest struct { func (x *FindAllUserFeatureDefinitionsRequest) Reset() { *x = FindAllUserFeatureDefinitionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[22] + mi := &file_service_user_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1364,7 +1540,7 @@ func (x *FindAllUserFeatureDefinitionsRequest) String() string { func (*FindAllUserFeatureDefinitionsRequest) ProtoMessage() {} func (x *FindAllUserFeatureDefinitionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[22] + mi := &file_service_user_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1377,7 +1553,7 @@ func (x *FindAllUserFeatureDefinitionsRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use FindAllUserFeatureDefinitionsRequest.ProtoReflect.Descriptor instead. func (*FindAllUserFeatureDefinitionsRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{22} + return file_service_user_proto_rawDescGZIP(), []int{24} } type FindAllUserFeatureDefinitionsResponse struct { @@ -1391,7 +1567,7 @@ type FindAllUserFeatureDefinitionsResponse struct { func (x *FindAllUserFeatureDefinitionsResponse) Reset() { *x = FindAllUserFeatureDefinitionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[23] + mi := &file_service_user_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1404,7 +1580,7 @@ func (x *FindAllUserFeatureDefinitionsResponse) String() string { func (*FindAllUserFeatureDefinitionsResponse) ProtoMessage() {} func (x *FindAllUserFeatureDefinitionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[23] + mi := &file_service_user_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1417,7 +1593,7 @@ func (x *FindAllUserFeatureDefinitionsResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use FindAllUserFeatureDefinitionsResponse.ProtoReflect.Descriptor instead. func (*FindAllUserFeatureDefinitionsResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{23} + return file_service_user_proto_rawDescGZIP(), []int{25} } func (x *FindAllUserFeatureDefinitionsResponse) GetFeatures() []*UserFeature { @@ -1437,7 +1613,7 @@ type ComposeUserGlobalBoardRequest struct { func (x *ComposeUserGlobalBoardRequest) Reset() { *x = ComposeUserGlobalBoardRequest{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[24] + mi := &file_service_user_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1450,7 +1626,7 @@ func (x *ComposeUserGlobalBoardRequest) String() string { func (*ComposeUserGlobalBoardRequest) ProtoMessage() {} func (x *ComposeUserGlobalBoardRequest) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[24] + mi := &file_service_user_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1463,7 +1639,7 @@ func (x *ComposeUserGlobalBoardRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ComposeUserGlobalBoardRequest.ProtoReflect.Descriptor instead. func (*ComposeUserGlobalBoardRequest) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{24} + return file_service_user_proto_rawDescGZIP(), []int{26} } type ComposeUserGlobalBoardResponse struct { @@ -1486,7 +1662,7 @@ type ComposeUserGlobalBoardResponse struct { func (x *ComposeUserGlobalBoardResponse) Reset() { *x = ComposeUserGlobalBoardResponse{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[25] + mi := &file_service_user_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1499,7 +1675,7 @@ func (x *ComposeUserGlobalBoardResponse) String() string { func (*ComposeUserGlobalBoardResponse) ProtoMessage() {} func (x *ComposeUserGlobalBoardResponse) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[25] + mi := &file_service_user_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1512,7 +1688,7 @@ func (x *ComposeUserGlobalBoardResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ComposeUserGlobalBoardResponse.ProtoReflect.Descriptor instead. func (*ComposeUserGlobalBoardResponse) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{25} + return file_service_user_proto_rawDescGZIP(), []int{27} } func (x *ComposeUserGlobalBoardResponse) GetTotalUsers() int64 { @@ -1597,7 +1773,7 @@ type ComposeUserDashboardResponse_DailyStat struct { func (x *ComposeUserDashboardResponse_DailyStat) Reset() { *x = ComposeUserDashboardResponse_DailyStat{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[26] + mi := &file_service_user_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1610,7 +1786,7 @@ func (x *ComposeUserDashboardResponse_DailyStat) String() string { func (*ComposeUserDashboardResponse_DailyStat) ProtoMessage() {} func (x *ComposeUserDashboardResponse_DailyStat) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[26] + mi := &file_service_user_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1623,7 +1799,7 @@ func (x *ComposeUserDashboardResponse_DailyStat) ProtoReflect() protoreflect.Mes // Deprecated: Use ComposeUserDashboardResponse_DailyStat.ProtoReflect.Descriptor instead. func (*ComposeUserDashboardResponse_DailyStat) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{16, 0} + return file_service_user_proto_rawDescGZIP(), []int{18, 0} } func (x *ComposeUserDashboardResponse_DailyStat) GetDay() string { @@ -1652,7 +1828,7 @@ type ComposeUserGlobalBoardResponse_DailyStat struct { func (x *ComposeUserGlobalBoardResponse_DailyStat) Reset() { *x = ComposeUserGlobalBoardResponse_DailyStat{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[27] + mi := &file_service_user_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1665,7 +1841,7 @@ func (x *ComposeUserGlobalBoardResponse_DailyStat) String() string { func (*ComposeUserGlobalBoardResponse_DailyStat) ProtoMessage() {} func (x *ComposeUserGlobalBoardResponse_DailyStat) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[27] + mi := &file_service_user_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1678,7 +1854,7 @@ func (x *ComposeUserGlobalBoardResponse_DailyStat) ProtoReflect() protoreflect.M // Deprecated: Use ComposeUserGlobalBoardResponse_DailyStat.ProtoReflect.Descriptor instead. func (*ComposeUserGlobalBoardResponse_DailyStat) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{25, 0} + return file_service_user_proto_rawDescGZIP(), []int{27, 0} } func (x *ComposeUserGlobalBoardResponse_DailyStat) GetDay() string { @@ -1709,7 +1885,7 @@ type ComposeUserGlobalBoardResponse_TrafficStat struct { func (x *ComposeUserGlobalBoardResponse_TrafficStat) Reset() { *x = ComposeUserGlobalBoardResponse_TrafficStat{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[28] + mi := &file_service_user_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1722,7 +1898,7 @@ func (x *ComposeUserGlobalBoardResponse_TrafficStat) String() string { func (*ComposeUserGlobalBoardResponse_TrafficStat) ProtoMessage() {} func (x *ComposeUserGlobalBoardResponse_TrafficStat) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[28] + mi := &file_service_user_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1735,7 +1911,7 @@ func (x *ComposeUserGlobalBoardResponse_TrafficStat) ProtoReflect() protoreflect // Deprecated: Use ComposeUserGlobalBoardResponse_TrafficStat.ProtoReflect.Descriptor instead. func (*ComposeUserGlobalBoardResponse_TrafficStat) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{25, 1} + return file_service_user_proto_rawDescGZIP(), []int{27, 1} } func (x *ComposeUserGlobalBoardResponse_TrafficStat) GetUserId() int64 { @@ -1796,270 +1972,299 @@ var file_service_user_proto_rawDesc = []byte{ 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 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, 0x22, 0x91, 0x02, 0x0a, 0x11, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x13, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 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, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, + 0x62, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, + 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x6f, 0x0a, 0x11, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 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, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x52, + 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 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, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x91, 0x02, + 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 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, 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, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x65, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, + 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6e, + 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x64, 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x37, + 0x0a, 0x1b, 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, 0x12, 0x18, 0x0a, + 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5f, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x0a, 0x18, 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, 0x1e, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1c, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, + 0x4e, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 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, 0x22, + 0x33, 0x0a, 0x19, 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, 0x16, 0x0a, 0x06, + 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, + 0x72, 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, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x22, 0x59, 0x0a, 0x11, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 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, 0x12, 0x0a, + 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x79, 0x0a, 0x15, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 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, 0x1a, 0x0a, 0x08, + 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x62, 0x69, + 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x68, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 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, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x6f, - 0x62, 0x69, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x74, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, - 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2b, - 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x1b, 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, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, - 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, - 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5f, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x0a, 0x18, 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, 0x1e, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x08, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x22, 0x30, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, - 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x18, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 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, 0x22, 0x33, 0x0a, 0x19, - 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, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, - 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x22, 0x4a, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 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, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x59, 0x0a, - 0x11, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 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, 0x12, 0x0a, 0x04, 0x69, 0x73, - 0x4f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4b, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 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, 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6c, - 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, - 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x68, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x22, 0x35, 0x0a, 0x1b, 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, 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, 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, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, - 0x35, 0x0a, 0x1b, 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, 0x12, 0x16, - 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x83, 0x04, 0x0a, 0x1c, 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, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x6d, - 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, - 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, - 0x17, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, - 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x61, 0x69, 0x6c, 0x79, - 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x11, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, 0x65, - 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, 0x54, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x11, 0x64, - 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x83, 0x04, 0x0a, 0x1c, 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, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x11, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, 0x65, - 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 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, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x52, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x33, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, - 0x53, 0x74, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x36, 0x0a, 0x1c, - 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, 0x12, 0x16, 0x0a, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x1d, 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, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x6f, - 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x19, 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, 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, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, - 0x6f, 0x64, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x18, 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, 0x2b, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, - 0x01, 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, - 0x22, 0x26, 0x0a, 0x24, 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, 0x22, 0x54, 0x0a, 0x25, 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, 0x2b, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 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, 0x22, 0x1f, - 0x0a, 0x1d, 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, 0x22, - 0xf7, 0x05, 0x0a, 0x1e, 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, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x64, 0x61, 0x79, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x10, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x65, 0x65, - 0x6b, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x15, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 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, 0x2e, 0x44, - 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x4e, 0x6f, 0x64, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4e, - 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6d, 0x65, 0x6d, - 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x20, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, - 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6c, 0x6f, 0x61, - 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0f, 0x74, - 0x6f, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x22, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 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, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x53, 0x74, 0x61, 0x74, 0x52, 0x0f, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x33, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x64, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x7d, 0x0a, 0x0b, 0x54, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x13, + 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x6f, 0x6e, 0x74, 0x68, + 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x38, + 0x0a, 0x17, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x17, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x61, 0x69, 0x6c, + 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x11, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, + 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, + 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x11, + 0x64, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 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, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x52, 0x11, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, + 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 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, 0x2e, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x52, 0x15, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x50, 0x65, 0x65, 0x6b, 0x54, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x33, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x36, 0x0a, + 0x1c, 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, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x1d, 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, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6e, + 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x19, + 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, 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, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, - 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x32, 0xca, 0x09, 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, 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, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x64, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x43, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x18, 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, 0x2b, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x18, 0x01, 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, 0x22, 0x26, 0x0a, 0x24, 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, 0x22, 0x54, 0x0a, 0x25, 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, 0x2b, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, + 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, 0x22, + 0x1f, 0x0a, 0x1d, 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, + 0x22, 0xf7, 0x05, 0x0a, 0x1e, 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, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x64, 0x61, + 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, + 0x10, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x65, + 0x65, 0x6b, 0x6c, 0x79, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x15, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x64, 0x61, 0x69, 0x6c, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 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, 0x2e, + 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x69, 0x6c, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x4e, 0x6f, 0x64, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, + 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x70, 0x75, + 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x10, 0x6d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x20, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x6f, 0x64, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6c, 0x6f, + 0x61, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0f, + 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, + 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 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, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0f, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x33, 0x0a, 0x09, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x64, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x7d, 0x0a, 0x0b, 0x54, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 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, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, + 0x0a, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x32, 0xb8, 0x0a, 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, 0x37, 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, 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, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, + 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, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2074,89 +2279,95 @@ func file_service_user_proto_rawDescGZIP() []byte { return file_service_user_proto_rawDescData } -var file_service_user_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_service_user_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_service_user_proto_goTypes = []interface{}{ (*CreateUserRequest)(nil), // 0: pb.CreateUserRequest (*CreateUserResponse)(nil), // 1: pb.CreateUserResponse - (*UpdateUserRequest)(nil), // 2: pb.UpdateUserRequest - (*DeleteUserRequest)(nil), // 3: pb.DeleteUserRequest - (*CountAllEnabledUsersRequest)(nil), // 4: pb.CountAllEnabledUsersRequest - (*ListEnabledUsersRequest)(nil), // 5: pb.ListEnabledUsersRequest - (*ListEnabledUsersResponse)(nil), // 6: pb.ListEnabledUsersResponse - (*FindEnabledUserRequest)(nil), // 7: pb.FindEnabledUserRequest - (*FindEnabledUserResponse)(nil), // 8: pb.FindEnabledUserResponse - (*CheckUserUsernameRequest)(nil), // 9: pb.CheckUserUsernameRequest - (*CheckUserUsernameResponse)(nil), // 10: pb.CheckUserUsernameResponse - (*LoginUserRequest)(nil), // 11: pb.LoginUserRequest - (*LoginUserResponse)(nil), // 12: pb.LoginUserResponse - (*UpdateUserInfoRequest)(nil), // 13: pb.UpdateUserInfoRequest - (*UpdateUserLoginRequest)(nil), // 14: pb.UpdateUserLoginRequest - (*ComposeUserDashboardRequest)(nil), // 15: pb.ComposeUserDashboardRequest - (*ComposeUserDashboardResponse)(nil), // 16: pb.ComposeUserDashboardResponse - (*FindUserNodeClusterIdRequest)(nil), // 17: pb.FindUserNodeClusterIdRequest - (*FindUserNodeClusterIdResponse)(nil), // 18: pb.FindUserNodeClusterIdResponse - (*UpdateUserFeaturesRequest)(nil), // 19: pb.UpdateUserFeaturesRequest - (*FindUserFeaturesRequest)(nil), // 20: pb.FindUserFeaturesRequest - (*FindUserFeaturesResponse)(nil), // 21: pb.FindUserFeaturesResponse - (*FindAllUserFeatureDefinitionsRequest)(nil), // 22: pb.FindAllUserFeatureDefinitionsRequest - (*FindAllUserFeatureDefinitionsResponse)(nil), // 23: pb.FindAllUserFeatureDefinitionsResponse - (*ComposeUserGlobalBoardRequest)(nil), // 24: pb.ComposeUserGlobalBoardRequest - (*ComposeUserGlobalBoardResponse)(nil), // 25: pb.ComposeUserGlobalBoardResponse - (*ComposeUserDashboardResponse_DailyStat)(nil), // 26: pb.ComposeUserDashboardResponse.DailyStat - (*ComposeUserGlobalBoardResponse_DailyStat)(nil), // 27: pb.ComposeUserGlobalBoardResponse.DailyStat - (*ComposeUserGlobalBoardResponse_TrafficStat)(nil), // 28: pb.ComposeUserGlobalBoardResponse.TrafficStat - (*User)(nil), // 29: pb.User - (*UserFeature)(nil), // 30: pb.UserFeature - (*NodeValue)(nil), // 31: pb.NodeValue - (*RPCSuccess)(nil), // 32: pb.RPCSuccess - (*RPCCountResponse)(nil), // 33: pb.RPCCountResponse + (*RegisterUserRequest)(nil), // 2: pb.RegisterUserRequest + (*VerifyUserRequest)(nil), // 3: pb.VerifyUserRequest + (*UpdateUserRequest)(nil), // 4: pb.UpdateUserRequest + (*DeleteUserRequest)(nil), // 5: pb.DeleteUserRequest + (*CountAllEnabledUsersRequest)(nil), // 6: pb.CountAllEnabledUsersRequest + (*ListEnabledUsersRequest)(nil), // 7: pb.ListEnabledUsersRequest + (*ListEnabledUsersResponse)(nil), // 8: pb.ListEnabledUsersResponse + (*FindEnabledUserRequest)(nil), // 9: pb.FindEnabledUserRequest + (*FindEnabledUserResponse)(nil), // 10: pb.FindEnabledUserResponse + (*CheckUserUsernameRequest)(nil), // 11: pb.CheckUserUsernameRequest + (*CheckUserUsernameResponse)(nil), // 12: pb.CheckUserUsernameResponse + (*LoginUserRequest)(nil), // 13: pb.LoginUserRequest + (*LoginUserResponse)(nil), // 14: pb.LoginUserResponse + (*UpdateUserInfoRequest)(nil), // 15: pb.UpdateUserInfoRequest + (*UpdateUserLoginRequest)(nil), // 16: pb.UpdateUserLoginRequest + (*ComposeUserDashboardRequest)(nil), // 17: pb.ComposeUserDashboardRequest + (*ComposeUserDashboardResponse)(nil), // 18: pb.ComposeUserDashboardResponse + (*FindUserNodeClusterIdRequest)(nil), // 19: pb.FindUserNodeClusterIdRequest + (*FindUserNodeClusterIdResponse)(nil), // 20: pb.FindUserNodeClusterIdResponse + (*UpdateUserFeaturesRequest)(nil), // 21: pb.UpdateUserFeaturesRequest + (*FindUserFeaturesRequest)(nil), // 22: pb.FindUserFeaturesRequest + (*FindUserFeaturesResponse)(nil), // 23: pb.FindUserFeaturesResponse + (*FindAllUserFeatureDefinitionsRequest)(nil), // 24: pb.FindAllUserFeatureDefinitionsRequest + (*FindAllUserFeatureDefinitionsResponse)(nil), // 25: pb.FindAllUserFeatureDefinitionsResponse + (*ComposeUserGlobalBoardRequest)(nil), // 26: pb.ComposeUserGlobalBoardRequest + (*ComposeUserGlobalBoardResponse)(nil), // 27: pb.ComposeUserGlobalBoardResponse + (*ComposeUserDashboardResponse_DailyStat)(nil), // 28: pb.ComposeUserDashboardResponse.DailyStat + (*ComposeUserGlobalBoardResponse_DailyStat)(nil), // 29: pb.ComposeUserGlobalBoardResponse.DailyStat + (*ComposeUserGlobalBoardResponse_TrafficStat)(nil), // 30: pb.ComposeUserGlobalBoardResponse.TrafficStat + (*User)(nil), // 31: pb.User + (*UserFeature)(nil), // 32: pb.UserFeature + (*NodeValue)(nil), // 33: pb.NodeValue + (*RPCSuccess)(nil), // 34: pb.RPCSuccess + (*RPCCountResponse)(nil), // 35: pb.RPCCountResponse } var file_service_user_proto_depIdxs = []int32{ - 29, // 0: pb.ListEnabledUsersResponse.users:type_name -> pb.User - 29, // 1: pb.FindEnabledUserResponse.user:type_name -> pb.User - 26, // 2: pb.ComposeUserDashboardResponse.dailyTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyStat - 26, // 3: pb.ComposeUserDashboardResponse.dailyPeekTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyStat - 30, // 4: pb.FindUserFeaturesResponse.features:type_name -> pb.UserFeature - 30, // 5: pb.FindAllUserFeatureDefinitionsResponse.features:type_name -> pb.UserFeature - 27, // 6: pb.ComposeUserGlobalBoardResponse.dailyStats:type_name -> pb.ComposeUserGlobalBoardResponse.DailyStat - 31, // 7: pb.ComposeUserGlobalBoardResponse.cpuNodeValues:type_name -> pb.NodeValue - 31, // 8: pb.ComposeUserGlobalBoardResponse.memoryNodeValues:type_name -> pb.NodeValue - 31, // 9: pb.ComposeUserGlobalBoardResponse.loadNodeValues:type_name -> pb.NodeValue - 28, // 10: pb.ComposeUserGlobalBoardResponse.topTrafficStats:type_name -> pb.ComposeUserGlobalBoardResponse.TrafficStat + 31, // 0: pb.ListEnabledUsersResponse.users:type_name -> pb.User + 31, // 1: pb.FindEnabledUserResponse.user:type_name -> pb.User + 28, // 2: pb.ComposeUserDashboardResponse.dailyTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyStat + 28, // 3: pb.ComposeUserDashboardResponse.dailyPeekTrafficStats:type_name -> pb.ComposeUserDashboardResponse.DailyStat + 32, // 4: pb.FindUserFeaturesResponse.features:type_name -> pb.UserFeature + 32, // 5: pb.FindAllUserFeatureDefinitionsResponse.features:type_name -> pb.UserFeature + 29, // 6: pb.ComposeUserGlobalBoardResponse.dailyStats:type_name -> pb.ComposeUserGlobalBoardResponse.DailyStat + 33, // 7: pb.ComposeUserGlobalBoardResponse.cpuNodeValues:type_name -> pb.NodeValue + 33, // 8: pb.ComposeUserGlobalBoardResponse.memoryNodeValues:type_name -> pb.NodeValue + 33, // 9: pb.ComposeUserGlobalBoardResponse.loadNodeValues:type_name -> pb.NodeValue + 30, // 10: pb.ComposeUserGlobalBoardResponse.topTrafficStats:type_name -> pb.ComposeUserGlobalBoardResponse.TrafficStat 0, // 11: pb.UserService.createUser:input_type -> pb.CreateUserRequest - 2, // 12: pb.UserService.updateUser:input_type -> pb.UpdateUserRequest - 3, // 13: pb.UserService.deleteUser:input_type -> pb.DeleteUserRequest - 4, // 14: pb.UserService.countAllEnabledUsers:input_type -> pb.CountAllEnabledUsersRequest - 5, // 15: pb.UserService.listEnabledUsers:input_type -> pb.ListEnabledUsersRequest - 7, // 16: pb.UserService.findEnabledUser:input_type -> pb.FindEnabledUserRequest - 9, // 17: pb.UserService.checkUserUsername:input_type -> pb.CheckUserUsernameRequest - 11, // 18: pb.UserService.loginUser:input_type -> pb.LoginUserRequest - 13, // 19: pb.UserService.updateUserInfo:input_type -> pb.UpdateUserInfoRequest - 14, // 20: pb.UserService.updateUserLogin:input_type -> pb.UpdateUserLoginRequest - 15, // 21: pb.UserService.composeUserDashboard:input_type -> pb.ComposeUserDashboardRequest - 17, // 22: pb.UserService.findUserNodeClusterId:input_type -> pb.FindUserNodeClusterIdRequest - 19, // 23: pb.UserService.updateUserFeatures:input_type -> pb.UpdateUserFeaturesRequest - 20, // 24: pb.UserService.findUserFeatures:input_type -> pb.FindUserFeaturesRequest - 22, // 25: pb.UserService.findAllUserFeatureDefinitions:input_type -> pb.FindAllUserFeatureDefinitionsRequest - 24, // 26: pb.UserService.composeUserGlobalBoard:input_type -> pb.ComposeUserGlobalBoardRequest - 1, // 27: pb.UserService.createUser:output_type -> pb.CreateUserResponse - 32, // 28: pb.UserService.updateUser:output_type -> pb.RPCSuccess - 32, // 29: pb.UserService.deleteUser:output_type -> pb.RPCSuccess - 33, // 30: pb.UserService.countAllEnabledUsers:output_type -> pb.RPCCountResponse - 6, // 31: pb.UserService.listEnabledUsers:output_type -> pb.ListEnabledUsersResponse - 8, // 32: pb.UserService.findEnabledUser:output_type -> pb.FindEnabledUserResponse - 10, // 33: pb.UserService.checkUserUsername:output_type -> pb.CheckUserUsernameResponse - 12, // 34: pb.UserService.loginUser:output_type -> pb.LoginUserResponse - 32, // 35: pb.UserService.updateUserInfo:output_type -> pb.RPCSuccess - 32, // 36: pb.UserService.updateUserLogin:output_type -> pb.RPCSuccess - 16, // 37: pb.UserService.composeUserDashboard:output_type -> pb.ComposeUserDashboardResponse - 18, // 38: pb.UserService.findUserNodeClusterId:output_type -> pb.FindUserNodeClusterIdResponse - 32, // 39: pb.UserService.updateUserFeatures:output_type -> pb.RPCSuccess - 21, // 40: pb.UserService.findUserFeatures:output_type -> pb.FindUserFeaturesResponse - 23, // 41: pb.UserService.findAllUserFeatureDefinitions:output_type -> pb.FindAllUserFeatureDefinitionsResponse - 25, // 42: pb.UserService.composeUserGlobalBoard:output_type -> pb.ComposeUserGlobalBoardResponse - 27, // [27:43] is the sub-list for method output_type - 11, // [11:27] is the sub-list for method input_type + 2, // 12: pb.UserService.registerUser:input_type -> pb.RegisterUserRequest + 3, // 13: pb.UserService.verifyUser:input_type -> pb.VerifyUserRequest + 4, // 14: pb.UserService.updateUser:input_type -> pb.UpdateUserRequest + 5, // 15: pb.UserService.deleteUser:input_type -> pb.DeleteUserRequest + 6, // 16: pb.UserService.countAllEnabledUsers:input_type -> pb.CountAllEnabledUsersRequest + 7, // 17: pb.UserService.listEnabledUsers:input_type -> pb.ListEnabledUsersRequest + 9, // 18: pb.UserService.findEnabledUser:input_type -> pb.FindEnabledUserRequest + 11, // 19: pb.UserService.checkUserUsername:input_type -> pb.CheckUserUsernameRequest + 13, // 20: pb.UserService.loginUser:input_type -> pb.LoginUserRequest + 15, // 21: pb.UserService.updateUserInfo:input_type -> pb.UpdateUserInfoRequest + 16, // 22: pb.UserService.updateUserLogin:input_type -> pb.UpdateUserLoginRequest + 17, // 23: pb.UserService.composeUserDashboard:input_type -> pb.ComposeUserDashboardRequest + 19, // 24: pb.UserService.findUserNodeClusterId:input_type -> pb.FindUserNodeClusterIdRequest + 21, // 25: pb.UserService.updateUserFeatures:input_type -> pb.UpdateUserFeaturesRequest + 22, // 26: pb.UserService.findUserFeatures:input_type -> pb.FindUserFeaturesRequest + 24, // 27: pb.UserService.findAllUserFeatureDefinitions:input_type -> pb.FindAllUserFeatureDefinitionsRequest + 26, // 28: pb.UserService.composeUserGlobalBoard:input_type -> pb.ComposeUserGlobalBoardRequest + 1, // 29: pb.UserService.createUser:output_type -> pb.CreateUserResponse + 34, // 30: pb.UserService.registerUser:output_type -> pb.RPCSuccess + 34, // 31: pb.UserService.verifyUser:output_type -> pb.RPCSuccess + 34, // 32: pb.UserService.updateUser:output_type -> pb.RPCSuccess + 34, // 33: pb.UserService.deleteUser:output_type -> pb.RPCSuccess + 35, // 34: pb.UserService.countAllEnabledUsers:output_type -> pb.RPCCountResponse + 8, // 35: pb.UserService.listEnabledUsers:output_type -> pb.ListEnabledUsersResponse + 10, // 36: pb.UserService.findEnabledUser:output_type -> pb.FindEnabledUserResponse + 12, // 37: pb.UserService.checkUserUsername:output_type -> pb.CheckUserUsernameResponse + 14, // 38: pb.UserService.loginUser:output_type -> pb.LoginUserResponse + 34, // 39: pb.UserService.updateUserInfo:output_type -> pb.RPCSuccess + 34, // 40: pb.UserService.updateUserLogin:output_type -> pb.RPCSuccess + 18, // 41: pb.UserService.composeUserDashboard:output_type -> pb.ComposeUserDashboardResponse + 20, // 42: pb.UserService.findUserNodeClusterId:output_type -> pb.FindUserNodeClusterIdResponse + 34, // 43: pb.UserService.updateUserFeatures:output_type -> pb.RPCSuccess + 23, // 44: pb.UserService.findUserFeatures:output_type -> pb.FindUserFeaturesResponse + 25, // 45: pb.UserService.findAllUserFeatureDefinitions:output_type -> pb.FindAllUserFeatureDefinitionsResponse + 27, // 46: pb.UserService.composeUserGlobalBoard:output_type -> pb.ComposeUserGlobalBoardResponse + 29, // [29:47] is the sub-list for method output_type + 11, // [11:29] 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 @@ -2197,7 +2408,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserRequest); i { + switch v := v.(*RegisterUserRequest); i { case 0: return &v.state case 1: @@ -2209,7 +2420,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteUserRequest); i { + switch v := v.(*VerifyUserRequest); i { case 0: return &v.state case 1: @@ -2221,7 +2432,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CountAllEnabledUsersRequest); i { + switch v := v.(*UpdateUserRequest); i { case 0: return &v.state case 1: @@ -2233,7 +2444,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEnabledUsersRequest); i { + switch v := v.(*DeleteUserRequest); i { case 0: return &v.state case 1: @@ -2245,7 +2456,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEnabledUsersResponse); i { + switch v := v.(*CountAllEnabledUsersRequest); i { case 0: return &v.state case 1: @@ -2257,7 +2468,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindEnabledUserRequest); i { + switch v := v.(*ListEnabledUsersRequest); i { case 0: return &v.state case 1: @@ -2269,7 +2480,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindEnabledUserResponse); i { + switch v := v.(*ListEnabledUsersResponse); i { case 0: return &v.state case 1: @@ -2281,7 +2492,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckUserUsernameRequest); i { + switch v := v.(*FindEnabledUserRequest); i { case 0: return &v.state case 1: @@ -2293,7 +2504,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckUserUsernameResponse); i { + switch v := v.(*FindEnabledUserResponse); i { case 0: return &v.state case 1: @@ -2305,7 +2516,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginUserRequest); i { + switch v := v.(*CheckUserUsernameRequest); i { case 0: return &v.state case 1: @@ -2317,7 +2528,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginUserResponse); i { + switch v := v.(*CheckUserUsernameResponse); i { case 0: return &v.state case 1: @@ -2329,7 +2540,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserInfoRequest); i { + switch v := v.(*LoginUserRequest); i { case 0: return &v.state case 1: @@ -2341,7 +2552,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserLoginRequest); i { + switch v := v.(*LoginUserResponse); i { case 0: return &v.state case 1: @@ -2353,7 +2564,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComposeUserDashboardRequest); i { + switch v := v.(*UpdateUserInfoRequest); i { case 0: return &v.state case 1: @@ -2365,7 +2576,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComposeUserDashboardResponse); i { + switch v := v.(*UpdateUserLoginRequest); i { case 0: return &v.state case 1: @@ -2377,7 +2588,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindUserNodeClusterIdRequest); i { + switch v := v.(*ComposeUserDashboardRequest); i { case 0: return &v.state case 1: @@ -2389,7 +2600,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindUserNodeClusterIdResponse); i { + switch v := v.(*ComposeUserDashboardResponse); i { case 0: return &v.state case 1: @@ -2401,7 +2612,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserFeaturesRequest); i { + switch v := v.(*FindUserNodeClusterIdRequest); i { case 0: return &v.state case 1: @@ -2413,7 +2624,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindUserFeaturesRequest); i { + switch v := v.(*FindUserNodeClusterIdResponse); i { case 0: return &v.state case 1: @@ -2425,7 +2636,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindUserFeaturesResponse); i { + switch v := v.(*UpdateUserFeaturesRequest); i { case 0: return &v.state case 1: @@ -2437,7 +2648,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindAllUserFeatureDefinitionsRequest); i { + switch v := v.(*FindUserFeaturesRequest); i { case 0: return &v.state case 1: @@ -2449,7 +2660,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindAllUserFeatureDefinitionsResponse); i { + switch v := v.(*FindUserFeaturesResponse); i { case 0: return &v.state case 1: @@ -2461,7 +2672,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComposeUserGlobalBoardRequest); i { + switch v := v.(*FindAllUserFeatureDefinitionsRequest); i { case 0: return &v.state case 1: @@ -2473,7 +2684,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComposeUserGlobalBoardResponse); i { + switch v := v.(*FindAllUserFeatureDefinitionsResponse); i { case 0: return &v.state case 1: @@ -2485,7 +2696,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComposeUserDashboardResponse_DailyStat); i { + switch v := v.(*ComposeUserGlobalBoardRequest); i { case 0: return &v.state case 1: @@ -2497,7 +2708,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ComposeUserGlobalBoardResponse_DailyStat); i { + switch v := v.(*ComposeUserGlobalBoardResponse); i { case 0: return &v.state case 1: @@ -2509,6 +2720,30 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ComposeUserDashboardResponse_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[29].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[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ComposeUserGlobalBoardResponse_TrafficStat); i { case 0: return &v.state @@ -2527,7 +2762,7 @@ func file_service_user_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_service_user_proto_rawDesc, NumEnums: 0, - NumMessages: 29, + NumMessages: 31, NumExtensions: 0, NumServices: 1, }, @@ -2555,6 +2790,10 @@ const _ = grpc.SupportPackageIsVersion6 type UserServiceClient interface { // 创建用户 CreateUser(ctx context.Context, in *CreateUserRequest, opts ...grpc.CallOption) (*CreateUserResponse, error) + // 注册用户 + RegisterUser(ctx context.Context, in *RegisterUserRequest, opts ...grpc.CallOption) (*RPCSuccess, error) + // 审核用户 + VerifyUser(ctx context.Context, in *VerifyUserRequest, opts ...grpc.CallOption) (*RPCSuccess, error) // 修改用户 UpdateUser(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*RPCSuccess, error) // 删除用户 @@ -2604,6 +2843,24 @@ func (c *userServiceClient) CreateUser(ctx context.Context, in *CreateUserReques return out, nil } +func (c *userServiceClient) RegisterUser(ctx context.Context, in *RegisterUserRequest, opts ...grpc.CallOption) (*RPCSuccess, error) { + out := new(RPCSuccess) + err := c.cc.Invoke(ctx, "/pb.UserService/registerUser", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userServiceClient) VerifyUser(ctx context.Context, in *VerifyUserRequest, opts ...grpc.CallOption) (*RPCSuccess, error) { + out := new(RPCSuccess) + err := c.cc.Invoke(ctx, "/pb.UserService/verifyUser", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *userServiceClient) UpdateUser(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*RPCSuccess, error) { out := new(RPCSuccess) err := c.cc.Invoke(ctx, "/pb.UserService/updateUser", in, out, opts...) @@ -2743,6 +3000,10 @@ func (c *userServiceClient) ComposeUserGlobalBoard(ctx context.Context, in *Comp type UserServiceServer interface { // 创建用户 CreateUser(context.Context, *CreateUserRequest) (*CreateUserResponse, error) + // 注册用户 + RegisterUser(context.Context, *RegisterUserRequest) (*RPCSuccess, error) + // 审核用户 + VerifyUser(context.Context, *VerifyUserRequest) (*RPCSuccess, error) // 修改用户 UpdateUser(context.Context, *UpdateUserRequest) (*RPCSuccess, error) // 删除用户 @@ -2782,6 +3043,12 @@ type UnimplementedUserServiceServer struct { func (*UnimplementedUserServiceServer) CreateUser(context.Context, *CreateUserRequest) (*CreateUserResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateUser not implemented") } +func (*UnimplementedUserServiceServer) RegisterUser(context.Context, *RegisterUserRequest) (*RPCSuccess, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterUser not implemented") +} +func (*UnimplementedUserServiceServer) VerifyUser(context.Context, *VerifyUserRequest) (*RPCSuccess, error) { + return nil, status.Errorf(codes.Unimplemented, "method VerifyUser not implemented") +} func (*UnimplementedUserServiceServer) UpdateUser(context.Context, *UpdateUserRequest) (*RPCSuccess, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented") } @@ -2850,6 +3117,42 @@ func _UserService_CreateUser_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _UserService_RegisterUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RegisterUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserServiceServer).RegisterUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.UserService/RegisterUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserServiceServer).RegisterUser(ctx, req.(*RegisterUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _UserService_VerifyUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VerifyUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserServiceServer).VerifyUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.UserService/VerifyUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserServiceServer).VerifyUser(ctx, req.(*VerifyUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _UserService_UpdateUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateUserRequest) if err := dec(in); err != nil { @@ -3128,6 +3431,14 @@ var _UserService_serviceDesc = grpc.ServiceDesc{ MethodName: "createUser", Handler: _UserService_CreateUser_Handler, }, + { + MethodName: "registerUser", + Handler: _UserService_RegisterUser_Handler, + }, + { + MethodName: "verifyUser", + Handler: _UserService_VerifyUser_Handler, + }, { MethodName: "updateUser", Handler: _UserService_UpdateUser_Handler, diff --git a/pkg/rpc/protos/models/model_user.proto b/pkg/rpc/protos/models/model_user.proto index 21de4f6..d9bbe2e 100644 --- a/pkg/rpc/protos/models/model_user.proto +++ b/pkg/rpc/protos/models/model_user.proto @@ -16,6 +16,11 @@ message User { string remark = 7; bool isOn = 8; int64 createdAt = 9; + string registeredIP = 12; + bool isVerified = 13; + bool isRejected = 14; + string rejectReason = 15; + NodeCluster nodeCluster = 10; repeated UserFeature features = 11; } \ No newline at end of file diff --git a/pkg/rpc/protos/service_user.proto b/pkg/rpc/protos/service_user.proto index 0b69feb..2e8b0dd 100644 --- a/pkg/rpc/protos/service_user.proto +++ b/pkg/rpc/protos/service_user.proto @@ -13,6 +13,12 @@ service UserService { // 创建用户 rpc createUser (CreateUserRequest) returns (CreateUserResponse); + // 注册用户 + rpc registerUser(RegisterUserRequest) returns (RPCSuccess); + + // 审核用户 + rpc verifyUser(VerifyUserRequest) returns (RPCSuccess); + // 修改用户 rpc updateUser (UpdateUserRequest) returns (RPCSuccess); @@ -76,6 +82,24 @@ message CreateUserResponse { int64 userId = 1; } +// 注册用户 +message RegisterUserRequest { + string username = 1; + string password = 2; + string mobile = 3; + string email = 4; + string fullname = 5; + string ip = 6; + string source = 7; +} + +// 审核用户 +message VerifyUserRequest { + int64 userId = 1; + bool isRejected = 2; + string rejectReason = 3; +} + // 修改用户 message UpdateUserRequest { int64 userId = 1; @@ -146,6 +170,8 @@ message LoginUserResponse { message UpdateUserInfoRequest { int64 userId = 1; string fullname = 2; + string mobile = 3; + string email = 4; } // 修改用户登录信息 diff --git a/pkg/systemconfigs/settings.go b/pkg/systemconfigs/settings.go index 3689838..9b99280 100644 --- a/pkg/systemconfigs/settings.go +++ b/pkg/systemconfigs/settings.go @@ -12,6 +12,9 @@ const ( SettingCodeAccessLogQueue SettingCode = "accessLogQueue" // 访问日志队列 SettingCodeCheckUpdates SettingCode = "checkUpdates" // 检查自动更新配置 + SettingCodeUserUIConfig SettingCode = "userUIConfig" // 用户界面配置 + SettingCodeUserRegisterConfig SettingCode = "userRegisterConfig" // 用户注册配置 + SettingCodeNSAccessLogSetting SettingCode = "nsAccessLogSetting" // NS相关全局配置 SettingCodeNSNodeMonitor SettingCode = "nsNodeMonitor" // 监控NS节点状态 diff --git a/pkg/userconfigs/user_features.go b/pkg/userconfigs/user_features.go index 6cec40f..d47e2dc 100644 --- a/pkg/userconfigs/user_features.go +++ b/pkg/userconfigs/user_features.go @@ -11,6 +11,9 @@ const ( UserFeatureCodeServerAccessLog UserFeatureCode = "server.accessLog" UserFeatureCodeServerViewAccessLog UserFeatureCode = "server.viewAccessLog" UserFeatureCodePlan UserFeatureCode = "plan" + UserFeatureCodeScript UserFeatureCode = "script" + UserFeatureCodeServerWAF UserFeatureCode = "server.waf" + UserFeatureCodeFinance UserFeatureCode = "finance" ) // UserFeature 用户功能 @@ -64,12 +67,12 @@ func FindAllUserFeatures() []*UserFeature { }, { Name: "开启WAF", - Code: "server.waf", + Code: UserFeatureCodeServerWAF, Description: "用户可以开启WAF功能并可以设置黑白名单等", }, { Name: "费用账单", - Code: "finance", + Code: UserFeatureCodeFinance, Description: "开启费用账单相关功能", }, { @@ -77,6 +80,11 @@ func FindAllUserFeatures() []*UserFeature { Code: UserFeatureCodePlan, Description: "用户可以购买和管理套餐", }, + { + Name: "边缘脚本", + Code: UserFeatureCodeScript, + Description: "用户可以在使用边缘脚本过滤请求", + }, } } diff --git a/pkg/userconfigs/user_register_config.go b/pkg/userconfigs/user_register_config.go new file mode 100644 index 0000000..2c4596e --- /dev/null +++ b/pkg/userconfigs/user_register_config.go @@ -0,0 +1,27 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. + +package userconfigs + +type UserRegisterConfig struct { + IsOn bool `yaml:"isOn" json:"isOn"` // 是否启用用户注册 + ClusterId int64 `yaml:"clusterId" json:"clusterId"` // 用户创建服务集群 + ServerGroupIds []int64 `yaml:"serverGroupIds" json:"serverGroupIds"` // 用户注册的服务所在分组 + ComplexPassword bool `yaml:"complexPassword" json:"complexPassword"` // 必须使用复杂密码 + Features []string `yaml:"features" json:"features"` // 默认启用的功能 + RequireVerification bool `yaml:"requireVerification" json:"requireVerification"` // 是否需要审核 +} + +func DefaultUserRegisterConfig() *UserRegisterConfig { + return &UserRegisterConfig{ + IsOn: false, + ComplexPassword: true, + Features: []string{ + UserFeatureCodeServerAccessLog, + UserFeatureCodeServerViewAccessLog, + UserFeatureCodeServerWAF, + UserFeatureCodeFinance, + UserFeatureCodePlan, + }, + RequireVerification: false, + } +}