Skip to content

Commit b9eb787

Browse files
committed
Some more verbose logging when rejecting knocks
Squashed commit of the following: commit 48d500d Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Thu Jul 22 09:38:56 2021 +0100 More logging still commit 0378db3 Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Thu Jul 22 09:33:34 2021 +0100 More verbose reporting
1 parent ae88543 commit b9eb787

1 file changed

Lines changed: 23 additions & 5 deletions

File tree

eventauth.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,10 @@ func (m *membershipAllower) membershipAllowedSelf() error { // nolint: gocyclo
10191019
}
10201020
if m.newMember.Membership == Knock {
10211021
if m.joinRule.JoinRule != Knock {
1022-
return m.membershipFailed()
1022+
return errorf(
1023+
"%q is not allowed to change their membership from %q to %q as the join rule %q does not allow knocking",
1024+
m.targetID, m.oldMember.Membership, m.newMember.Membership, m.joinRule.JoinRule,
1025+
)
10231026
}
10241027
// A user that is not in the room is allowed to knock if the join
10251028
// rules are "knock" and they are not already joined to, invited to
@@ -1028,13 +1031,19 @@ func (m *membershipAllower) membershipAllowedSelf() error { // nolint: gocyclo
10281031
if supported, err := m.roomVersion.AllowKnockingInEventAuth(); err != nil {
10291032
return fmt.Errorf("m.roomVersion.AllowKnockingInEventAuth: %w", err)
10301033
} else if !supported {
1031-
return m.membershipFailed()
1034+
return errorf(
1035+
"%q is not allowed to change their membership from %q to %q as room version %q does not support knocking",
1036+
m.targetID, m.oldMember.Membership, m.newMember.Membership, m.roomVersion,
1037+
)
10321038
}
10331039
switch m.oldMember.Membership {
10341040
case Join, Invite, Ban:
10351041
// The user is already joined, invited or banned, therefore they
10361042
// can't knock.
1037-
return m.membershipFailed()
1043+
return errorf(
1044+
"%q is not allowed to change their membership from %q to %q as they are already joined/invited/banned",
1045+
m.targetID, m.oldMember.Membership, m.newMember.Membership,
1046+
)
10381047
default:
10391048
// A non-joined, non-invited, non-banned user is allowed to knock.
10401049
return nil
@@ -1122,11 +1131,20 @@ func (m *membershipAllower) membershipAllowedOther() error { // nolint: gocyclo
11221131
return nil
11231132
}
11241133
// A user can invite in response to a knock.
1125-
if m.joinRule.JoinRule == Knock && m.oldMember.Membership == Knock && senderLevel >= m.powerLevels.Invite {
1134+
if m.oldMember.Membership == Knock && senderLevel >= m.powerLevels.Invite {
1135+
if m.joinRule.JoinRule != Knock {
1136+
return errorf(
1137+
"%q is not allowed to change the membership of %q from %q to %q as the join rule %q does not allow knocking",
1138+
m.senderID, m.targetID, m.oldMember.Membership, m.newMember.Membership, m.joinRule.JoinRule,
1139+
)
1140+
}
11261141
if supported, err := m.roomVersion.AllowKnockingInEventAuth(); err != nil {
11271142
return fmt.Errorf("m.roomVersion.AllowKnockingInEventAuth: %w", err)
11281143
} else if !supported {
1129-
return m.membershipFailed()
1144+
return errorf(
1145+
"%q is not allowed to change the membership of %q from %q to %q as room version %q does not support knocking",
1146+
m.senderID, m.targetID, m.oldMember.Membership, m.newMember.Membership, m.roomVersion,
1147+
)
11301148
}
11311149
return nil
11321150
}

0 commit comments

Comments
 (0)