Fix failing complement test (#1917)

Specifically `TestBannedUserCannotSendJoin`
This commit is contained in:
kegsay 2021-07-13 12:22:27 +01:00 committed by GitHub
parent f8ae391a5b
commit 7df3e691f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -271,17 +271,27 @@ func SendJoin(
// Check if the user is already in the room. If they're already in then // Check if the user is already in the room. If they're already in then
// there isn't much point in sending another join event into the room. // there isn't much point in sending another join event into the room.
// Also check to see if they are banned: if they are then we reject them.
alreadyJoined := false alreadyJoined := false
isBanned := false
for _, se := range stateAndAuthChainResponse.StateEvents { for _, se := range stateAndAuthChainResponse.StateEvents {
if !se.StateKeyEquals(*event.StateKey()) { if !se.StateKeyEquals(*event.StateKey()) {
continue continue
} }
if membership, merr := se.Membership(); merr == nil { if membership, merr := se.Membership(); merr == nil {
alreadyJoined = (membership == gomatrixserverlib.Join) alreadyJoined = (membership == gomatrixserverlib.Join)
isBanned = (membership == gomatrixserverlib.Ban)
break break
} }
} }
if isBanned {
return util.JSONResponse{
Code: http.StatusForbidden,
JSON: jsonerror.Forbidden("user is banned"),
}
}
// Send the events to the room server. // Send the events to the room server.
// We are responsible for notifying other servers that the user has joined // We are responsible for notifying other servers that the user has joined
// the room, so set SendAsServer to cfg.Matrix.ServerName // the room, so set SendAsServer to cfg.Matrix.ServerName