parent
f8ae391a5b
commit
7df3e691f2
|
@ -271,17 +271,27 @@ func SendJoin(
|
|||
|
||||
// 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.
|
||||
// Also check to see if they are banned: if they are then we reject them.
|
||||
alreadyJoined := false
|
||||
isBanned := false
|
||||
for _, se := range stateAndAuthChainResponse.StateEvents {
|
||||
if !se.StateKeyEquals(*event.StateKey()) {
|
||||
continue
|
||||
}
|
||||
if membership, merr := se.Membership(); merr == nil {
|
||||
alreadyJoined = (membership == gomatrixserverlib.Join)
|
||||
isBanned = (membership == gomatrixserverlib.Ban)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if isBanned {
|
||||
return util.JSONResponse{
|
||||
Code: http.StatusForbidden,
|
||||
JSON: jsonerror.Forbidden("user is banned"),
|
||||
}
|
||||
}
|
||||
|
||||
// Send the events to the room server.
|
||||
// We are responsible for notifying other servers that the user has joined
|
||||
// the room, so set SendAsServer to cfg.Matrix.ServerName
|
||||
|
|
Loading…
Reference in New Issue