1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-08 05:57:03 +09:00

Add permission change

This commit is contained in:
Mikhail Rakhmanov 2025-05-12 20:48:26 +02:00
parent 9f434b0edd
commit 45371109cd
No known key found for this signature in database
GPG key ID: DED12CFEF5B8396B
7 changed files with 452 additions and 94 deletions

View file

@ -279,6 +279,66 @@ func (m *AclAccountInvite) GetEncryptedReadKey() []byte {
return nil
}
type AclAccountInviteChange struct {
InviteRecordId string `protobuf:"bytes,1,opt,name=inviteRecordId,proto3" json:"inviteRecordId,omitempty"`
Permissions AclUserPermissions `protobuf:"varint,2,opt,name=permissions,proto3,enum=aclrecord.AclUserPermissions" json:"permissions,omitempty"`
}
func (m *AclAccountInviteChange) Reset() { *m = AclAccountInviteChange{} }
func (m *AclAccountInviteChange) String() string { return proto.CompactTextString(m) }
func (*AclAccountInviteChange) ProtoMessage() {}
func (*AclAccountInviteChange) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{2}
}
func (m *AclAccountInviteChange) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *AclAccountInviteChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_AclAccountInviteChange.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *AclAccountInviteChange) XXX_MarshalAppend(b []byte, newLen int) ([]byte, error) {
b = b[:newLen]
_, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b, nil
}
func (m *AclAccountInviteChange) XXX_Merge(src proto.Message) {
xxx_messageInfo_AclAccountInviteChange.Merge(m, src)
}
func (m *AclAccountInviteChange) XXX_Size() int {
return m.Size()
}
func (m *AclAccountInviteChange) XXX_DiscardUnknown() {
xxx_messageInfo_AclAccountInviteChange.DiscardUnknown(m)
}
var xxx_messageInfo_AclAccountInviteChange proto.InternalMessageInfo
func (m *AclAccountInviteChange) GetInviteRecordId() string {
if m != nil {
return m.InviteRecordId
}
return ""
}
func (m *AclAccountInviteChange) GetPermissions() AclUserPermissions {
if m != nil {
return m.Permissions
}
return AclUserPermissions_None
}
// AclAccountRequestJoin contains the reference to the invite record and the data of the person who wants to join, confirmed by the private invite key
type AclAccountRequestJoin struct {
InviteIdentity []byte `protobuf:"bytes,1,opt,name=inviteIdentity,proto3" json:"inviteIdentity,omitempty"`
@ -292,7 +352,7 @@ func (m *AclAccountRequestJoin) Reset() { *m = AclAccountRequestJoin{} }
func (m *AclAccountRequestJoin) String() string { return proto.CompactTextString(m) }
func (*AclAccountRequestJoin) ProtoMessage() {}
func (*AclAccountRequestJoin) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{2}
return fileDescriptor_c8e9f754f34e929b, []int{3}
}
func (m *AclAccountRequestJoin) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -372,7 +432,7 @@ func (m *AclAccountInviteJoin) Reset() { *m = AclAccountInviteJoin{} }
func (m *AclAccountInviteJoin) String() string { return proto.CompactTextString(m) }
func (*AclAccountInviteJoin) ProtoMessage() {}
func (*AclAccountInviteJoin) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{3}
return fileDescriptor_c8e9f754f34e929b, []int{4}
}
func (m *AclAccountInviteJoin) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -456,7 +516,7 @@ func (m *AclAccountRequestAccept) Reset() { *m = AclAccountRequestAccept
func (m *AclAccountRequestAccept) String() string { return proto.CompactTextString(m) }
func (*AclAccountRequestAccept) ProtoMessage() {}
func (*AclAccountRequestAccept) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{4}
return fileDescriptor_c8e9f754f34e929b, []int{5}
}
func (m *AclAccountRequestAccept) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -530,7 +590,7 @@ func (m *AclAccountRequestDecline) Reset() { *m = AclAccountRequestDecli
func (m *AclAccountRequestDecline) String() string { return proto.CompactTextString(m) }
func (*AclAccountRequestDecline) ProtoMessage() {}
func (*AclAccountRequestDecline) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{5}
return fileDescriptor_c8e9f754f34e929b, []int{6}
}
func (m *AclAccountRequestDecline) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -583,7 +643,7 @@ func (m *AclAccountInviteRevoke) Reset() { *m = AclAccountInviteRevoke{}
func (m *AclAccountInviteRevoke) String() string { return proto.CompactTextString(m) }
func (*AclAccountInviteRevoke) ProtoMessage() {}
func (*AclAccountInviteRevoke) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{6}
return fileDescriptor_c8e9f754f34e929b, []int{7}
}
func (m *AclAccountInviteRevoke) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -637,7 +697,7 @@ func (m *AclEncryptedReadKey) Reset() { *m = AclEncryptedReadKey{} }
func (m *AclEncryptedReadKey) String() string { return proto.CompactTextString(m) }
func (*AclEncryptedReadKey) ProtoMessage() {}
func (*AclEncryptedReadKey) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{7}
return fileDescriptor_c8e9f754f34e929b, []int{8}
}
func (m *AclEncryptedReadKey) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -697,7 +757,7 @@ func (m *AclAccountPermissionChanges) Reset() { *m = AclAccountPermissio
func (m *AclAccountPermissionChanges) String() string { return proto.CompactTextString(m) }
func (*AclAccountPermissionChanges) ProtoMessage() {}
func (*AclAccountPermissionChanges) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{8}
return fileDescriptor_c8e9f754f34e929b, []int{9}
}
func (m *AclAccountPermissionChanges) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -750,7 +810,7 @@ func (m *AclAccountsAdd) Reset() { *m = AclAccountsAdd{} }
func (m *AclAccountsAdd) String() string { return proto.CompactTextString(m) }
func (*AclAccountsAdd) ProtoMessage() {}
func (*AclAccountsAdd) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{9}
return fileDescriptor_c8e9f754f34e929b, []int{10}
}
func (m *AclAccountsAdd) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -806,7 +866,7 @@ func (m *AclAccountAdd) Reset() { *m = AclAccountAdd{} }
func (m *AclAccountAdd) String() string { return proto.CompactTextString(m) }
func (*AclAccountAdd) ProtoMessage() {}
func (*AclAccountAdd) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{10}
return fileDescriptor_c8e9f754f34e929b, []int{11}
}
func (m *AclAccountAdd) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -880,7 +940,7 @@ func (m *AclAccountRequestCancel) Reset() { *m = AclAccountRequestCancel
func (m *AclAccountRequestCancel) String() string { return proto.CompactTextString(m) }
func (*AclAccountRequestCancel) ProtoMessage() {}
func (*AclAccountRequestCancel) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{11}
return fileDescriptor_c8e9f754f34e929b, []int{12}
}
func (m *AclAccountRequestCancel) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -934,7 +994,7 @@ func (m *AclAccountPermissionChange) Reset() { *m = AclAccountPermission
func (m *AclAccountPermissionChange) String() string { return proto.CompactTextString(m) }
func (*AclAccountPermissionChange) ProtoMessage() {}
func (*AclAccountPermissionChange) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{12}
return fileDescriptor_c8e9f754f34e929b, []int{13}
}
func (m *AclAccountPermissionChange) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1000,7 +1060,7 @@ func (m *AclReadKeyChange) Reset() { *m = AclReadKeyChange{} }
func (m *AclReadKeyChange) String() string { return proto.CompactTextString(m) }
func (*AclReadKeyChange) ProtoMessage() {}
func (*AclReadKeyChange) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{13}
return fileDescriptor_c8e9f754f34e929b, []int{14}
}
func (m *AclReadKeyChange) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1082,7 +1142,7 @@ func (m *AclAccountRemove) Reset() { *m = AclAccountRemove{} }
func (m *AclAccountRemove) String() string { return proto.CompactTextString(m) }
func (*AclAccountRemove) ProtoMessage() {}
func (*AclAccountRemove) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{14}
return fileDescriptor_c8e9f754f34e929b, []int{15}
}
func (m *AclAccountRemove) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1141,7 +1201,7 @@ func (m *AclAccountRequestRemove) Reset() { *m = AclAccountRequestRemove
func (m *AclAccountRequestRemove) String() string { return proto.CompactTextString(m) }
func (*AclAccountRequestRemove) ProtoMessage() {}
func (*AclAccountRequestRemove) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{15}
return fileDescriptor_c8e9f754f34e929b, []int{16}
}
func (m *AclAccountRequestRemove) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1195,6 +1255,7 @@ type AclContentValue struct {
// *AclContentValue_AccountsAdd
// *AclContentValue_RequestCancel
// *AclContentValue_InviteJoin
// *AclContentValue_InviteChange
Value isAclContentValueValue `protobuf_oneof:"value"`
}
@ -1202,7 +1263,7 @@ func (m *AclContentValue) Reset() { *m = AclContentValue{} }
func (m *AclContentValue) String() string { return proto.CompactTextString(m) }
func (*AclContentValue) ProtoMessage() {}
func (*AclContentValue) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{16}
return fileDescriptor_c8e9f754f34e929b, []int{17}
}
func (m *AclContentValue) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1284,6 +1345,9 @@ type AclContentValue_RequestCancel struct {
type AclContentValue_InviteJoin struct {
InviteJoin *AclAccountInviteJoin `protobuf:"bytes,13,opt,name=inviteJoin,proto3,oneof" json:"inviteJoin,omitempty"`
}
type AclContentValue_InviteChange struct {
InviteChange *AclAccountInviteChange `protobuf:"bytes,14,opt,name=inviteChange,proto3,oneof" json:"inviteChange,omitempty"`
}
func (*AclContentValue_Invite) isAclContentValueValue() {}
func (*AclContentValue_InviteRevoke) isAclContentValueValue() {}
@ -1298,6 +1362,7 @@ func (*AclContentValue_PermissionChanges) isAclContentValueValue() {}
func (*AclContentValue_AccountsAdd) isAclContentValueValue() {}
func (*AclContentValue_RequestCancel) isAclContentValueValue() {}
func (*AclContentValue_InviteJoin) isAclContentValueValue() {}
func (*AclContentValue_InviteChange) isAclContentValueValue() {}
func (m *AclContentValue) GetValue() isAclContentValueValue {
if m != nil {
@ -1397,6 +1462,13 @@ func (m *AclContentValue) GetInviteJoin() *AclAccountInviteJoin {
return nil
}
func (m *AclContentValue) GetInviteChange() *AclAccountInviteChange {
if x, ok := m.GetValue().(*AclContentValue_InviteChange); ok {
return x.InviteChange
}
return nil
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*AclContentValue) XXX_OneofWrappers() []interface{} {
return []interface{}{
@ -1413,6 +1485,7 @@ func (*AclContentValue) XXX_OneofWrappers() []interface{} {
(*AclContentValue_AccountsAdd)(nil),
(*AclContentValue_RequestCancel)(nil),
(*AclContentValue_InviteJoin)(nil),
(*AclContentValue_InviteChange)(nil),
}
}
@ -1425,7 +1498,7 @@ func (m *AclData) Reset() { *m = AclData{} }
func (m *AclData) String() string { return proto.CompactTextString(m) }
func (*AclData) ProtoMessage() {}
func (*AclData) Descriptor() ([]byte, []int) {
return fileDescriptor_c8e9f754f34e929b, []int{17}
return fileDescriptor_c8e9f754f34e929b, []int{18}
}
func (m *AclData) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1474,6 +1547,7 @@ func init() {
proto.RegisterEnum("aclrecord.AclUserPermissions", AclUserPermissions_name, AclUserPermissions_value)
proto.RegisterType((*AclRoot)(nil), "aclrecord.AclRoot")
proto.RegisterType((*AclAccountInvite)(nil), "aclrecord.AclAccountInvite")
proto.RegisterType((*AclAccountInviteChange)(nil), "aclrecord.AclAccountInviteChange")
proto.RegisterType((*AclAccountRequestJoin)(nil), "aclrecord.AclAccountRequestJoin")
proto.RegisterType((*AclAccountInviteJoin)(nil), "aclrecord.AclAccountInviteJoin")
proto.RegisterType((*AclAccountRequestAccept)(nil), "aclrecord.AclAccountRequestAccept")
@ -1497,78 +1571,80 @@ func init() {
}
var fileDescriptor_c8e9f754f34e929b = []byte{
// 1125 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdf, 0x6e, 0xdb, 0x54,
0x18, 0xb7, 0x93, 0xa6, 0x69, 0xbe, 0x34, 0x99, 0x7b, 0x36, 0x36, 0xaf, 0x83, 0x10, 0x8c, 0x36,
0x45, 0x15, 0x5a, 0x51, 0x50, 0xa7, 0x69, 0x02, 0x3a, 0x2f, 0x9d, 0x96, 0x6c, 0x1a, 0x4c, 0x67,
0x63, 0x43, 0x48, 0x20, 0xb9, 0xf6, 0xd1, 0x30, 0x38, 0xc7, 0xc1, 0x3e, 0x09, 0xca, 0x5b, 0xf0,
0x1c, 0x5c, 0x73, 0xcb, 0x3d, 0x17, 0x5c, 0xf4, 0x0e, 0x84, 0xb8, 0x40, 0xed, 0x13, 0xf0, 0x06,
0xe8, 0x1c, 0x3b, 0xf6, 0xb1, 0x63, 0xa7, 0xe9, 0x05, 0xda, 0x45, 0x1b, 0x9f, 0xef, 0x7c, 0xff,
0x7f, 0xdf, 0x1f, 0x1b, 0x3e, 0xb6, 0xfd, 0xf1, 0xd8, 0xa7, 0xe1, 0xc4, 0xb2, 0xc9, 0xbe, 0x7f,
0xfc, 0x1d, 0xb1, 0xd9, 0xbe, 0x65, 0x7b, 0xfc, 0x2f, 0x20, 0xb6, 0x1f, 0x38, 0x93, 0xc0, 0x67,
0xfe, 0xbe, 0xf8, 0x1f, 0xa6, 0xd4, 0xdb, 0x82, 0x80, 0x1a, 0x09, 0xc1, 0xf8, 0xb7, 0x02, 0x75,
0xd3, 0xf6, 0xb0, 0xef, 0x33, 0xb4, 0x0b, 0x5b, 0xae, 0x43, 0x28, 0x73, 0xd9, 0x5c, 0x57, 0xbb,
0x6a, 0x6f, 0x1b, 0x27, 0x67, 0xf4, 0x36, 0x34, 0xc6, 0x56, 0xc8, 0x48, 0xf0, 0x84, 0xcc, 0xf5,
0x8a, 0xb8, 0x4c, 0x09, 0x48, 0x87, 0xba, 0x70, 0x65, 0xe4, 0xe8, 0xd5, 0xae, 0xda, 0x6b, 0xe0,
0xc5, 0x11, 0xed, 0x81, 0x46, 0xa8, 0x1d, 0xcc, 0x27, 0x8c, 0x38, 0x98, 0x58, 0x0e, 0x17, 0xdf,
0x10, 0xe2, 0x4b, 0x74, 0x6e, 0x83, 0xb9, 0x63, 0x12, 0x32, 0x6b, 0x3c, 0xd1, 0x6b, 0x5d, 0xb5,
0x57, 0xc5, 0x29, 0x01, 0x7d, 0x00, 0x3b, 0x0b, 0x6f, 0x9e, 0xbb, 0xaf, 0xa9, 0xc5, 0xa6, 0x01,
0xd1, 0x37, 0x85, 0xaa, 0xe5, 0x0b, 0x74, 0x0b, 0xda, 0x63, 0xc2, 0x2c, 0xc7, 0x62, 0xd6, 0xb3,
0xe9, 0x31, 0xb7, 0x5a, 0x17, 0xac, 0x39, 0x2a, 0xba, 0x07, 0x7a, 0xe2, 0xc7, 0xd3, 0xc5, 0x55,
0xe0, 0xce, 0xb8, 0xc4, 0x96, 0x90, 0x28, 0xbd, 0x47, 0x77, 0xe0, 0x6a, 0x72, 0xf7, 0xf9, 0x8f,
0x94, 0x04, 0x0b, 0x06, 0xbd, 0x21, 0x24, 0x4b, 0x6e, 0x8d, 0x3f, 0x54, 0xd0, 0x4c, 0xdb, 0x33,
0x6d, 0xdb, 0x9f, 0x52, 0x36, 0xa2, 0x33, 0x97, 0x11, 0x1e, 0xbc, 0x2b, 0x9e, 0xb8, 0xe5, 0x28,
0xfb, 0x29, 0x01, 0xdd, 0x05, 0x88, 0x0e, 0x2f, 0xe6, 0x13, 0x22, 0xf2, 0xdf, 0xee, 0xeb, 0xb7,
0x53, 0x5c, 0x4d, 0xdb, 0x1b, 0x25, 0xf7, 0x58, 0xe2, 0x45, 0x87, 0xd0, 0x9c, 0x90, 0x60, 0xec,
0x86, 0xa1, 0xeb, 0xd3, 0x50, 0xc0, 0xd3, 0xee, 0xbf, 0x93, 0x15, 0xfd, 0x22, 0x24, 0xc1, 0xb3,
0x94, 0x09, 0xcb, 0x12, 0x17, 0x41, 0xd0, 0xf8, 0x55, 0x85, 0xb7, 0xd2, 0xc8, 0x30, 0xf9, 0x61,
0x4a, 0x42, 0xf6, 0xd8, 0x77, 0x29, 0xc7, 0x23, 0x72, 0x6a, 0x94, 0xad, 0xb0, 0x1c, 0x35, 0xe5,
0xc3, 0xc2, 0xbb, 0x91, 0x23, 0x82, 0x6d, 0xe0, 0x1c, 0x15, 0xdd, 0x85, 0x6b, 0x59, 0xc9, 0xb4,
0x26, 0xaa, 0x42, 0x71, 0xd9, 0x35, 0xaf, 0xf2, 0x45, 0x0d, 0xc4, 0x71, 0x24, 0x67, 0xe3, 0x6f,
0x15, 0xae, 0xe4, 0x91, 0x11, 0xee, 0xaf, 0x6a, 0x8d, 0x37, 0xea, 0x72, 0x21, 0x3c, 0xb5, 0x12,
0x78, 0x7e, 0x57, 0xe1, 0xda, 0x12, 0x3c, 0xa6, 0x6d, 0x93, 0xc9, 0xea, 0xe6, 0xef, 0xc1, 0xa5,
0x20, 0x62, 0xce, 0x85, 0x98, 0x27, 0x17, 0x7a, 0x53, 0x2d, 0x69, 0xf7, 0x5c, 0x65, 0x6e, 0x5c,
0xb4, 0x32, 0x8d, 0x23, 0xd0, 0x97, 0xa2, 0x39, 0x22, 0xb6, 0xe7, 0x52, 0x52, 0xe4, 0xb2, 0x5a,
0xe8, 0xb2, 0x71, 0x1f, 0xae, 0xe6, 0x21, 0xc7, 0x64, 0xe6, 0x7f, 0x4f, 0x0a, 0x80, 0x55, 0x8b,
0x80, 0x35, 0xbe, 0x86, 0xcb, 0xa6, 0xed, 0x3d, 0xcc, 0xc7, 0xb7, 0x2a, 0xa3, 0x45, 0x79, 0xaa,
0x94, 0xa0, 0xf6, 0x0d, 0xdc, 0x48, 0x1d, 0x4c, 0x93, 0x31, 0xf8, 0xd6, 0xa2, 0xaf, 0x49, 0x88,
0x0e, 0xa1, 0x6e, 0x47, 0x8f, 0xba, 0xda, 0xad, 0xf6, 0x9a, 0xfd, 0x9b, 0xd9, 0x14, 0x96, 0x08,
0xe2, 0x85, 0x94, 0x31, 0x84, 0x76, 0xca, 0x16, 0x9a, 0x8e, 0x83, 0xee, 0x40, 0xc3, 0x72, 0x1c,
0x97, 0x09, 0x5c, 0x22, 0xa5, 0x7a, 0xa1, 0x52, 0xd3, 0x71, 0x70, 0xca, 0x6a, 0xfc, 0xa2, 0x42,
0x2b, 0x73, 0xb9, 0x32, 0x07, 0x39, 0xfc, 0x2b, 0x17, 0x9e, 0x4c, 0x72, 0x5b, 0x54, 0xd7, 0x68,
0x8b, 0xb2, 0xa9, 0x75, 0x50, 0xd0, 0x15, 0x03, 0x8b, 0xda, 0xc4, 0xe3, 0x26, 0x82, 0x2c, 0xf8,
0xc9, 0xd9, 0x98, 0xc3, 0x6e, 0x79, 0x7a, 0xff, 0xd7, 0xc8, 0x8d, 0x9f, 0x2b, 0x62, 0x83, 0xc4,
0x01, 0xc4, 0x16, 0xef, 0x43, 0xd3, 0x8a, 0x9c, 0x79, 0x42, 0xe6, 0x0b, 0xdc, 0x3a, 0x59, 0xad,
0xf9, 0x22, 0xc5, 0xb2, 0x48, 0xc1, 0xd2, 0xac, 0x5c, 0x78, 0x69, 0x56, 0xcf, 0x59, 0x9a, 0x1f,
0xc2, 0xe5, 0x74, 0x2d, 0x7a, 0x39, 0x6c, 0x8a, 0xae, 0xd0, 0xa7, 0x8b, 0xdd, 0x27, 0xc2, 0xaa,
0xad, 0x15, 0x96, 0x24, 0x61, 0x4c, 0xe5, 0x6d, 0x8b, 0xc9, 0xd8, 0x9f, 0x11, 0xd4, 0x01, 0x88,
0xd1, 0x70, 0xe3, 0xbe, 0xd9, 0xc6, 0x12, 0x05, 0x99, 0xd0, 0x0a, 0xe4, 0xe4, 0x8a, 0x44, 0x34,
0xfb, 0x37, 0xb2, 0x66, 0x33, 0xf9, 0xc7, 0x59, 0x09, 0xe3, 0x7a, 0x41, 0x55, 0x45, 0xd6, 0x8d,
0xbf, 0xea, 0x70, 0xc9, 0xb4, 0xbd, 0x81, 0x4f, 0x19, 0xa1, 0xec, 0xa5, 0xe5, 0x4d, 0x09, 0x3a,
0x80, 0xcd, 0xc8, 0x67, 0x51, 0x2d, 0x4b, 0xa6, 0x32, 0xf3, 0x69, 0xa8, 0xe0, 0x98, 0x19, 0x3d,
0x82, 0x6d, 0x57, 0x9a, 0x59, 0xb1, 0x9f, 0xef, 0xad, 0x10, 0x8e, 0x18, 0x87, 0x0a, 0xce, 0x08,
0xa2, 0x23, 0x68, 0x06, 0xe9, 0xbe, 0x16, 0x30, 0x36, 0xfb, 0xdd, 0x42, 0x3d, 0xd2, 0x5e, 0x1f,
0x2a, 0x58, 0x16, 0x43, 0x8f, 0x79, 0xde, 0xa4, 0xb5, 0x22, 0x70, 0x6d, 0xf6, 0x8d, 0x55, 0x7a,
0x22, 0xce, 0xa1, 0x82, 0xb3, 0xa2, 0xe8, 0x39, 0x68, 0x93, 0x5c, 0x57, 0x89, 0xcd, 0xb6, 0xee,
0x84, 0x1b, 0x2a, 0x78, 0x49, 0x01, 0x1a, 0x40, 0xcb, 0x92, 0x2b, 0x41, 0xbc, 0x41, 0x96, 0x65,
0x3b, 0x62, 0xe1, 0x9e, 0x65, 0x64, 0xb8, 0x92, 0x6c, 0x75, 0xd4, 0xcf, 0xad, 0x8e, 0x28, 0x3c,
0xb9, 0x5d, 0x9f, 0x42, 0x3b, 0xc8, 0xec, 0x2c, 0xf1, 0xbe, 0xd9, 0xec, 0xbf, 0xbf, 0x2a, 0x57,
0x31, 0xeb, 0x50, 0xc1, 0x39, 0x61, 0xf4, 0x25, 0x5c, 0xb1, 0x0a, 0x6a, 0x4d, 0xbc, 0x8a, 0x9e,
0x03, 0x40, 0x12, 0x66, 0xa1, 0x06, 0xf4, 0x12, 0x76, 0xf2, 0x69, 0x0c, 0x75, 0x10, 0x6a, 0x6f,
0xad, 0x05, 0x44, 0x38, 0x54, 0xf0, 0xb2, 0x0a, 0xf4, 0x49, 0x32, 0xaf, 0xf8, 0xd2, 0xd1, 0x9b,
0x42, 0xe3, 0xf5, 0x42, 0x8d, 0x9c, 0x81, 0x97, 0x9a, 0xc4, 0x2f, 0x95, 0x5a, 0x34, 0xab, 0xf5,
0xed, 0xf3, 0x23, 0x8d, 0x38, 0xa5, 0x52, 0x8b, 0xc7, 0xbc, 0xb9, 0x18, 0x31, 0xa2, 0xf6, 0x5b,
0x42, 0xd1, 0xbb, 0x2b, 0x7a, 0x28, 0x2e, 0x7d, 0x49, 0xe8, 0x41, 0x1d, 0x6a, 0x33, 0xde, 0xc8,
0xc6, 0x43, 0xf1, 0x41, 0x75, 0xc4, 0x97, 0xd0, 0x3d, 0x00, 0x2b, 0x69, 0xf3, 0x78, 0x20, 0xef,
0x66, 0xd5, 0xca, 0x33, 0x00, 0x4b, 0xdc, 0x7b, 0x07, 0x62, 0x95, 0xa6, 0x2f, 0xf5, 0x68, 0x07,
0x5a, 0x71, 0x14, 0x2f, 0x7c, 0x6e, 0x51, 0x53, 0x38, 0xc9, 0xa4, 0x73, 0x9f, 0x92, 0x81, 0x45,
0x05, 0x49, 0xdd, 0x7b, 0x05, 0x68, 0x79, 0x79, 0xa0, 0x2d, 0xd8, 0xf8, 0xcc, 0xa7, 0x44, 0x53,
0x50, 0x03, 0x6a, 0xe2, 0x63, 0x44, 0x53, 0xf9, 0xa3, 0xe9, 0x8c, 0x5d, 0xaa, 0x55, 0x10, 0xc0,
0xe6, 0xab, 0xc0, 0x65, 0x24, 0xd0, 0xaa, 0xfc, 0x99, 0x57, 0x2e, 0x09, 0xb4, 0x0d, 0xce, 0xf2,
0x88, 0x5b, 0xd4, 0x6a, 0x0f, 0x0e, 0x7f, 0x3b, 0xed, 0xa8, 0x27, 0xa7, 0x1d, 0xf5, 0x9f, 0xd3,
0x8e, 0xfa, 0xd3, 0x59, 0x47, 0x39, 0x39, 0xeb, 0x28, 0x7f, 0x9e, 0x75, 0x94, 0xaf, 0x6e, 0xae,
0xf5, 0x2d, 0x7a, 0xbc, 0x29, 0x7e, 0x3e, 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x75, 0x08, 0x98,
0x61, 0xbb, 0x0e, 0x00, 0x00,
// 1155 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x41, 0x8f, 0xdb, 0x54,
0x10, 0xb6, 0x93, 0xcd, 0x66, 0x33, 0xd9, 0x4d, 0xbd, 0xaf, 0xa5, 0x75, 0xb7, 0x10, 0x82, 0x51,
0xab, 0x68, 0x85, 0xba, 0x28, 0x68, 0xab, 0xaa, 0x02, 0xb6, 0x6e, 0xb6, 0x6a, 0xd2, 0xaa, 0x50,
0xbd, 0x96, 0x16, 0x21, 0x81, 0xe4, 0xb5, 0x9f, 0x8a, 0xc1, 0xb1, 0x83, 0xfd, 0x12, 0x94, 0x23,
0xff, 0x80, 0xff, 0xc0, 0x8d, 0x33, 0x57, 0xee, 0x1c, 0x38, 0xf4, 0x06, 0x07, 0x0e, 0x68, 0xf7,
0x17, 0xf0, 0x0f, 0xd0, 0x7b, 0x76, 0xec, 0xf7, 0x1c, 0x3b, 0xc9, 0x0a, 0xa1, 0x1e, 0xda, 0xb5,
0xe7, 0xcd, 0xcc, 0xfb, 0x66, 0xe6, 0x9b, 0x99, 0x18, 0x3e, 0xb4, 0x83, 0xd1, 0x28, 0xf0, 0xa3,
0xb1, 0x65, 0x93, 0x83, 0xe0, 0xe4, 0x1b, 0x62, 0xd3, 0x03, 0xcb, 0xf6, 0xd8, 0xbf, 0x90, 0xd8,
0x41, 0xe8, 0x8c, 0xc3, 0x80, 0x06, 0x07, 0xfc, 0xff, 0x28, 0x93, 0xde, 0xe4, 0x02, 0xd4, 0x48,
0x05, 0xc6, 0x3f, 0x15, 0xa8, 0x9b, 0xb6, 0x87, 0x83, 0x80, 0xa2, 0x3d, 0xd8, 0x72, 0x1d, 0xe2,
0x53, 0x97, 0xce, 0x74, 0xb5, 0xa3, 0x76, 0xb7, 0x71, 0xfa, 0x8e, 0xde, 0x84, 0xc6, 0xc8, 0x8a,
0x28, 0x09, 0x1f, 0x91, 0x99, 0x5e, 0xe1, 0x87, 0x99, 0x00, 0xe9, 0x50, 0xe7, 0x50, 0x86, 0x8e,
0x5e, 0xed, 0xa8, 0xdd, 0x06, 0x9e, 0xbf, 0xa2, 0x7d, 0xd0, 0x88, 0x6f, 0x87, 0xb3, 0x31, 0x25,
0x0e, 0x26, 0x96, 0xc3, 0xcc, 0x37, 0xb8, 0xf9, 0x82, 0x9c, 0xdd, 0x41, 0xdd, 0x11, 0x89, 0xa8,
0x35, 0x1a, 0xeb, 0xb5, 0x8e, 0xda, 0xad, 0xe2, 0x4c, 0x80, 0xde, 0x83, 0xdd, 0x39, 0x9a, 0xa7,
0xee, 0x4b, 0xdf, 0xa2, 0x93, 0x90, 0xe8, 0x9b, 0xdc, 0xd5, 0xe2, 0x01, 0xba, 0x01, 0xad, 0x11,
0xa1, 0x96, 0x63, 0x51, 0xeb, 0xc9, 0xe4, 0x84, 0xdd, 0x5a, 0xe7, 0xaa, 0x39, 0x29, 0xba, 0x03,
0x7a, 0x8a, 0xe3, 0xf1, 0xfc, 0x28, 0x74, 0xa7, 0xcc, 0x62, 0x8b, 0x5b, 0x94, 0x9e, 0xa3, 0x5b,
0x70, 0x39, 0x3d, 0xfb, 0xf4, 0x7b, 0x9f, 0x84, 0x73, 0x05, 0xbd, 0xc1, 0x2d, 0x4b, 0x4e, 0x8d,
0x3f, 0x54, 0xd0, 0x4c, 0xdb, 0x33, 0x6d, 0x3b, 0x98, 0xf8, 0x74, 0xe8, 0x4f, 0x5d, 0x4a, 0x58,
0xf0, 0x2e, 0x7f, 0x62, 0x37, 0xc7, 0xd9, 0xcf, 0x04, 0xe8, 0x36, 0x40, 0xfc, 0xf2, 0x6c, 0x36,
0x26, 0x3c, 0xff, 0xad, 0x9e, 0x7e, 0x33, 0xab, 0xab, 0x69, 0x7b, 0xc3, 0xf4, 0x1c, 0x0b, 0xba,
0xe8, 0x08, 0x9a, 0x63, 0x12, 0x8e, 0xdc, 0x28, 0x72, 0x03, 0x3f, 0xe2, 0xe5, 0x69, 0xf5, 0xde,
0x92, 0x4d, 0x3f, 0x8b, 0x48, 0xf8, 0x24, 0x53, 0xc2, 0xa2, 0xc5, 0x79, 0x2a, 0x68, 0xfc, 0xa0,
0xc2, 0xe5, 0x7c, 0x64, 0xfd, 0xaf, 0x2d, 0xff, 0x25, 0x2f, 0x48, 0x8c, 0x0a, 0xf3, 0x6b, 0x87,
0x0e, 0x0f, 0xb2, 0x81, 0x73, 0xd2, 0x3c, 0xde, 0xca, 0x79, 0xf1, 0x1a, 0xbf, 0xaa, 0xf0, 0x46,
0x86, 0x01, 0x93, 0xef, 0x26, 0x24, 0xa2, 0x0f, 0x03, 0xd7, 0xcf, 0x20, 0x0c, 0x65, 0x96, 0xe7,
0xa4, 0x05, 0x50, 0x2b, 0x85, 0x50, 0x6f, 0xc3, 0x15, 0xd9, 0x32, 0xe3, 0x65, 0x95, 0x3b, 0x2e,
0x3b, 0x66, 0x9d, 0x36, 0xe7, 0x61, 0x92, 0xcb, 0xf4, 0xdd, 0xf8, 0x4b, 0x85, 0x4b, 0xf9, 0x1c,
0x72, 0xf8, 0xcb, 0xda, 0xf3, 0xb5, 0x42, 0x2e, 0xa4, 0x48, 0xad, 0x84, 0x22, 0xbf, 0xab, 0x70,
0x65, 0xa1, 0x3c, 0xa6, 0x6d, 0x93, 0xf1, 0xf2, 0x01, 0xd4, 0x85, 0x0b, 0x61, 0xac, 0x9c, 0x0b,
0x31, 0x2f, 0x2e, 0x44, 0x53, 0x2d, 0x19, 0x39, 0x39, 0xb6, 0x6d, 0x9c, 0x9b, 0x6d, 0xc7, 0xa0,
0x2f, 0x44, 0x73, 0x4c, 0x6c, 0xcf, 0xf5, 0x49, 0x11, 0x64, 0xb5, 0x10, 0xb2, 0x71, 0x77, 0xb1,
0x6d, 0x30, 0x99, 0x06, 0xdf, 0xae, 0xdd, 0x36, 0xc6, 0x97, 0x70, 0xd1, 0xb4, 0xbd, 0xfb, 0xf9,
0xf8, 0x96, 0x65, 0xb4, 0x28, 0x4f, 0x95, 0x92, 0xaa, 0x7d, 0x05, 0xd7, 0x32, 0x80, 0x59, 0x32,
0xe2, 0xde, 0x8e, 0xd0, 0x11, 0xd4, 0xed, 0xf8, 0x51, 0x57, 0x3b, 0xd5, 0x6e, 0xb3, 0x77, 0x5d,
0x4e, 0x61, 0x89, 0x21, 0x9e, 0x5b, 0x19, 0x03, 0x68, 0x65, 0x6a, 0x91, 0xe9, 0x38, 0xe8, 0x16,
0x34, 0x2c, 0xc7, 0x71, 0x29, 0xaf, 0x4b, 0xec, 0x54, 0x2f, 0x74, 0x6a, 0x3a, 0x0e, 0xce, 0x54,
0x8d, 0x5f, 0x54, 0xd8, 0x91, 0x0e, 0x97, 0xe6, 0xe0, 0xbf, 0x4e, 0x1b, 0xa9, 0x2d, 0xaa, 0x6b,
0xb4, 0x45, 0xd9, 0xe4, 0x3c, 0x2c, 0xe8, 0x8a, 0xbe, 0xe5, 0xdb, 0xc4, 0x63, 0x57, 0x84, 0x72,
0xf1, 0xd3, 0x77, 0x63, 0x06, 0x7b, 0xe5, 0xe9, 0xfd, 0x5f, 0x23, 0x37, 0x7e, 0xae, 0xf0, 0x2d,
0x96, 0x04, 0x90, 0xdc, 0x78, 0x17, 0x9a, 0x56, 0x0c, 0xe6, 0x11, 0x99, 0xcd, 0xeb, 0xd6, 0x96,
0xbd, 0xe6, 0x49, 0x8a, 0x45, 0x93, 0x82, 0xc5, 0x5d, 0x39, 0xf7, 0xe2, 0xae, 0xae, 0x58, 0xdc,
0xef, 0xc3, 0xc5, 0x6c, 0x35, 0x7b, 0xb9, 0xda, 0x14, 0x1d, 0xa1, 0x8f, 0xe7, 0xfb, 0x97, 0x87,
0x55, 0x5b, 0x2b, 0x2c, 0xc1, 0xc2, 0x98, 0x88, 0x1b, 0x1f, 0x93, 0x51, 0x30, 0x25, 0xa8, 0x0d,
0x90, 0x54, 0xc3, 0x4d, 0xfa, 0x66, 0x1b, 0x0b, 0x12, 0x64, 0xc2, 0x4e, 0x28, 0x26, 0x97, 0x27,
0xa2, 0xd9, 0xbb, 0x26, 0x5f, 0x2b, 0xe5, 0x1f, 0xcb, 0x16, 0xc6, 0xd5, 0x02, 0x56, 0xc5, 0xb7,
0x1b, 0x3f, 0x6d, 0xc1, 0x05, 0xd3, 0xf6, 0xfa, 0x81, 0x4f, 0x89, 0x4f, 0x9f, 0x5b, 0xde, 0x84,
0xa0, 0x43, 0xd8, 0x8c, 0x31, 0x73, 0xb6, 0x2c, 0x5c, 0x25, 0xcd, 0xa7, 0x81, 0x82, 0x13, 0x65,
0xf4, 0x00, 0xb6, 0x5d, 0x61, 0x66, 0x25, 0x38, 0xdf, 0x59, 0x62, 0x1c, 0x2b, 0x0e, 0x14, 0x2c,
0x19, 0xa2, 0x63, 0x68, 0x86, 0xd9, 0xbe, 0xe6, 0x65, 0x6c, 0xf6, 0x3a, 0x85, 0x7e, 0x84, 0xbd,
0x3e, 0x50, 0xb0, 0x68, 0x86, 0x1e, 0xb2, 0xbc, 0x09, 0x6b, 0x85, 0xd7, 0xb5, 0xd9, 0x33, 0x96,
0xf9, 0x89, 0x35, 0x07, 0x0a, 0x96, 0x4d, 0xd1, 0x53, 0xd0, 0xc6, 0xb9, 0xae, 0xe2, 0x9b, 0x6d,
0xdd, 0x09, 0x37, 0x50, 0xf0, 0x82, 0x03, 0xd4, 0x87, 0x1d, 0x4b, 0x64, 0x02, 0xff, 0x15, 0x5b,
0x96, 0xed, 0x58, 0x85, 0x21, 0x93, 0x6c, 0x98, 0x13, 0x99, 0x1d, 0xf5, 0x95, 0xec, 0x88, 0xc3,
0x13, 0xdb, 0xf5, 0x31, 0xb4, 0x42, 0x69, 0x67, 0xf1, 0xdf, 0xbc, 0xcd, 0xde, 0xbb, 0xcb, 0x72,
0x95, 0xa8, 0x0e, 0x14, 0x9c, 0x33, 0x46, 0x9f, 0xc3, 0x25, 0xab, 0x80, 0x6b, 0xfc, 0xe7, 0xf0,
0x8a, 0x02, 0xa4, 0x61, 0x16, 0x7a, 0x40, 0xcf, 0x61, 0x37, 0x9f, 0xc6, 0x48, 0x07, 0xee, 0xf6,
0xc6, 0x5a, 0x85, 0x88, 0x06, 0x0a, 0x5e, 0x74, 0x81, 0x3e, 0x4a, 0xe7, 0x15, 0x5b, 0x3a, 0x7a,
0x93, 0x7b, 0xbc, 0x5a, 0xe8, 0x91, 0x29, 0x30, 0xaa, 0x09, 0xfa, 0x02, 0xd5, 0xe2, 0x59, 0xad,
0x6f, 0xaf, 0x8e, 0x34, 0xd6, 0x14, 0xa8, 0x96, 0x8c, 0x79, 0x73, 0x3e, 0x62, 0x38, 0xf7, 0x77,
0xb8, 0xa3, 0xb7, 0x97, 0xf4, 0x50, 0x42, 0x7d, 0xc1, 0x28, 0x6b, 0xc4, 0x84, 0x12, 0xad, 0x95,
0x8d, 0x98, 0x12, 0x43, 0x32, 0xbc, 0x57, 0x87, 0xda, 0x94, 0x4d, 0x04, 0xe3, 0x3e, 0xff, 0x3a,
0x3c, 0x66, 0xdb, 0xec, 0x0e, 0x80, 0x95, 0xce, 0x8b, 0x64, 0xb2, 0xef, 0xc9, 0xae, 0xc5, 0x61,
0x82, 0x05, 0xed, 0xfd, 0x43, 0xbe, 0x93, 0xb3, 0x2f, 0x14, 0xb4, 0x0b, 0x3b, 0x49, 0x3a, 0x9e,
0x05, 0x0c, 0xba, 0xa6, 0x30, 0x91, 0xe9, 0xcf, 0x02, 0x9f, 0xf4, 0x2d, 0x9f, 0x8b, 0xd4, 0xfd,
0x17, 0x80, 0x16, 0xb7, 0x10, 0xda, 0x82, 0x8d, 0x4f, 0x02, 0x9f, 0x68, 0x0a, 0x6a, 0x40, 0x8d,
0x7f, 0x59, 0x69, 0x2a, 0x7b, 0x34, 0x9d, 0x91, 0xeb, 0x6b, 0x15, 0x04, 0xb0, 0xf9, 0x22, 0x74,
0x29, 0x09, 0xb5, 0x2a, 0x7b, 0x66, 0x2d, 0x40, 0x42, 0x6d, 0x83, 0xa9, 0x3c, 0x60, 0x37, 0x6a,
0xb5, 0x7b, 0x47, 0xbf, 0x9d, 0xb6, 0xd5, 0x57, 0xa7, 0x6d, 0xf5, 0xef, 0xd3, 0xb6, 0xfa, 0xe3,
0x59, 0x5b, 0x79, 0x75, 0xd6, 0x56, 0xfe, 0x3c, 0x6b, 0x2b, 0x5f, 0x5c, 0x5f, 0xeb, 0xc3, 0xfa,
0x64, 0x93, 0xff, 0xf9, 0xe0, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xae, 0x8a, 0x0f, 0xac, 0x88,
0x0f, 0x00, 0x00,
}
func (m *AclRoot) Marshal() (dAtA []byte, err error) {
@ -1702,6 +1778,41 @@ func (m *AclAccountInvite) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *AclAccountInviteChange) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *AclAccountInviteChange) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *AclAccountInviteChange) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.Permissions != 0 {
i = encodeVarintAclrecord(dAtA, i, uint64(m.Permissions))
i--
dAtA[i] = 0x10
}
if len(m.InviteRecordId) > 0 {
i -= len(m.InviteRecordId)
copy(dAtA[i:], m.InviteRecordId)
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.InviteRecordId)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *AclAccountRequestJoin) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2589,6 +2700,27 @@ func (m *AclContentValue_InviteJoin) MarshalToSizedBuffer(dAtA []byte) (int, err
}
return len(dAtA) - i, nil
}
func (m *AclContentValue_InviteChange) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *AclContentValue_InviteChange) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
if m.InviteChange != nil {
{
size, err := m.InviteChange.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintAclrecord(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x72
}
return len(dAtA) - i, nil
}
func (m *AclData) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2704,6 +2836,22 @@ func (m *AclAccountInvite) Size() (n int) {
return n
}
func (m *AclAccountInviteChange) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.InviteRecordId)
if l > 0 {
n += 1 + l + sovAclrecord(uint64(l))
}
if m.Permissions != 0 {
n += 1 + sovAclrecord(uint64(m.Permissions))
}
return n
}
func (m *AclAccountRequestJoin) Size() (n int) {
if m == nil {
return 0
@ -3137,6 +3285,18 @@ func (m *AclContentValue_InviteJoin) Size() (n int) {
}
return n
}
func (m *AclContentValue_InviteChange) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.InviteChange != nil {
l = m.InviteChange.Size()
n += 1 + l + sovAclrecord(uint64(l))
}
return n
}
func (m *AclData) Size() (n int) {
if m == nil {
return 0
@ -3653,6 +3813,107 @@ func (m *AclAccountInvite) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *AclAccountInviteChange) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAclrecord
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: AclAccountInviteChange: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: AclAccountInviteChange: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field InviteRecordId", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAclrecord
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthAclrecord
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthAclrecord
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.InviteRecordId = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType)
}
m.Permissions = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAclrecord
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.Permissions |= AclUserPermissions(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipAclrecord(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthAclrecord
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *AclAccountRequestJoin) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -5902,6 +6163,41 @@ func (m *AclContentValue) Unmarshal(dAtA []byte) error {
}
m.Value = &AclContentValue_InviteJoin{v}
iNdEx = postIndex
case 14:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field InviteChange", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAclrecord
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthAclrecord
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthAclrecord
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
v := &AclAccountInviteChange{}
if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
m.Value = &AclContentValue_InviteChange{v}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipAclrecord(dAtA[iNdEx:])

View file

@ -23,6 +23,11 @@ message AclAccountInvite {
bytes encryptedReadKey = 4;
}
message AclAccountInviteChange {
string inviteRecordId = 1;
AclUserPermissions permissions = 2;
}
enum AclInviteType {
RequestToJoin = 0;
AnyoneCanJoin = 1;
@ -139,6 +144,7 @@ message AclContentValue {
AclAccountsAdd accountsAdd = 11;
AclAccountRequestCancel requestCancel = 12;
AclAccountInviteJoin inviteJoin = 13;
AclAccountInviteChange inviteChange = 14;
}
}

View file

@ -87,7 +87,7 @@ type AclRecordBuilder interface {
BuildRoot(content RootContent) (rec *consensusproto.RawRecordWithId, err error)
BuildBatchRequest(payload BatchRequestPayload) (rawRecord *consensusproto.RawRecord, err error)
BuildInvite() (res InviteResult, err error)
BuildInviteAnyone() (res InviteResult, err error)
BuildInviteAnyone(permissions AclPermissions) (res InviteResult, err error)
BuildInviteRevoke(inviteRecordId string) (rawRecord *consensusproto.RawRecord, err error)
BuildInviteJoin(payload InviteJoinPayload) (rawRecord *consensusproto.RawRecord, err error)
BuildRequestJoin(payload RequestJoinPayload) (rawRecord *consensusproto.RawRecord, err error)
@ -198,9 +198,18 @@ func (a *aclRecordBuilder) buildRecords(aclContent []*aclrecordproto.AclContentV
Payload: marshalledRec,
Signature: signature,
}
err = a.preflightCheck(rawRec)
return
}
func (a *aclRecordBuilder) preflightCheck(rawRecord *consensusproto.RawRecord) (err error) {
aclRec, err := a.Unmarshall(rawRecord)
if err != nil {
return
}
return a.state.Copy().ApplyRecord(aclRec)
}
func (a *aclRecordBuilder) BuildPermissionChanges(payload PermissionChangesPayload) (rawRecord *consensusproto.RawRecord, err error) {
content, err := a.buildPermissionChanges(payload)
if err != nil {
@ -322,7 +331,7 @@ func (a *aclRecordBuilder) BuildInvite() (res InviteResult, err error) {
return
}
func (a *aclRecordBuilder) BuildInviteAnyone() (res InviteResult, err error) {
func (a *aclRecordBuilder) BuildInviteAnyone(permissions AclPermissions) (res InviteResult, err error) {
if !a.state.Permissions(a.state.pubKey).CanManageAccounts() {
err = ErrInsufficientPermissions
return

View file

@ -420,6 +420,8 @@ func (st *AclState) Copy() *AclState {
func (st *AclState) applyChangeContent(ch *aclrecordproto.AclContentValue, record *AclRecord) error {
switch {
case ch.GetInviteChange() != nil:
return st.applyInviteChange(ch.GetInviteChange(), record)
case ch.GetInviteJoin() != nil:
return st.applyInviteJoin(ch.GetInviteJoin(), record)
case ch.GetPermissionChange() != nil:
@ -462,6 +464,17 @@ func (st *AclState) applyPermissionChanges(ch *aclrecordproto.AclAccountPermissi
return nil
}
func (st *AclState) applyInviteChange(ch *aclrecordproto.AclAccountInviteChange, record *AclRecord) (err error) {
err = st.contentValidator.ValidateInviteChange(ch, record.Identity)
if err != nil {
return err
}
invite := st.invites[ch.InviteRecordId]
invite.Permissions = AclPermissions(ch.Permissions)
st.invites[ch.InviteRecordId] = invite
return nil
}
func (st *AclState) applyPermissionChange(ch *aclrecordproto.AclAccountPermissionChange, record *AclRecord) error {
chIdentity, err := st.keyStore.PubKeyFromProto(ch.Identity)
if err != nil {

View file

@ -374,11 +374,20 @@ func (a *AclTestExecutor) Execute(cmd string) (err error) {
return err
}
case "invite_anyone":
res, err := acl.RecordBuilder().BuildInviteAnyone()
var permissions AclPermissions
inviteParts := strings.Split(args[0], ",")
if inviteParts[1] == "r" {
permissions = AclPermissions(aclrecordproto.AclUserPermissions_Reader)
} else if inviteParts[1] == "rw" {
permissions = AclPermissions(aclrecordproto.AclUserPermissions_Writer)
} else {
permissions = AclPermissions(aclrecordproto.AclUserPermissions_Admin)
}
res, err := acl.RecordBuilder().BuildInviteAnyone(permissions)
if err != nil {
return err
}
a.invites[args[0]] = res.InviteKey
a.invites[inviteParts[0]] = res.InviteKey
err = addRec(WrapAclRecord(res.InviteRec))
if err != nil {
return err

View file

@ -53,7 +53,7 @@ func TestAclExecutor(t *testing.T) {
{"a.init::a", nil},
// creating an invite
{"a.invite::invId", nil},
{"a.invite_anyone::oldInvId", nil},
{"a.invite_anyone::oldInvId,r", nil},
// cannot self join
{"a.join::invId", ErrInsufficientPermissions},
// now b can join
@ -129,7 +129,7 @@ func TestAclExecutor(t *testing.T) {
{"a.changes::guest,none", ErrInsufficientPermissions},
// can't change permission of existing user to guest, should be only possible to create it with add
{"a.changes::r,g", ErrInsufficientPermissions},
{"a.invite_anyone::invAnyoneId", nil},
{"a.invite_anyone::invAnyoneId,rw", nil},
{"new.invite_join::invAnyoneId", nil},
// invite keys persist after user removal
{"a.remove::new", nil},

View file

@ -15,6 +15,7 @@ type ContentValidator interface {
ValidateAccountsAdd(ch *aclrecordproto.AclAccountsAdd, authorIdentity crypto.PubKey) (err error)
ValidateInvite(ch *aclrecordproto.AclAccountInvite, authorIdentity crypto.PubKey) (err error)
ValidateInviteJoin(ch *aclrecordproto.AclAccountInviteJoin, authorIdentity crypto.PubKey) (err error)
ValidateInviteChange(ch *aclrecordproto.AclAccountInviteChange, authorIdentity crypto.PubKey) (err error)
ValidateInviteRevoke(ch *aclrecordproto.AclAccountInviteRevoke, authorIdentity crypto.PubKey) (err error)
ValidateRequestJoin(ch *aclrecordproto.AclAccountRequestJoin, authorIdentity crypto.PubKey) (err error)
ValidateRequestAccept(ch *aclrecordproto.AclAccountRequestAccept, authorIdentity crypto.PubKey) (err error)
@ -232,6 +233,30 @@ func (c *contentValidator) ValidateInvite(ch *aclrecordproto.AclAccountInvite, a
return
}
func (c *contentValidator) ValidateInviteChange(ch *aclrecordproto.AclAccountInviteChange, authorIdentity crypto.PubKey) (err error) {
if !c.verifier.ShouldValidate() {
return nil
}
if !c.aclState.Permissions(authorIdentity).CanManageAccounts() {
return ErrInsufficientPermissions
}
invite, exists := c.aclState.invites[ch.InviteRecordId]
if !exists {
return ErrNoSuchInvite
}
permissions := AclPermissions(ch.Permissions)
if invite.Type != aclrecordproto.AclInviteType_AnyoneCanJoin {
return ErrNoSuchInvite
}
if invite.Permissions == permissions {
return ErrInsufficientPermissions
}
if permissions.IsOwner() || permissions.NoPermissions() || permissions.IsGuest() {
return ErrInsufficientPermissions
}
return
}
func (c *contentValidator) ValidateInviteRevoke(ch *aclrecordproto.AclAccountInviteRevoke, authorIdentity crypto.PubKey) (err error) {
if !c.verifier.ShouldValidate() {
return nil