Make redaction check easier to read; check redact PL

This commit is contained in:
Till Faelligen 2023-03-02 11:28:36 +01:00
parent 6b1c9eafa9
commit b8aa0c7c92
No known key found for this signature in database
GPG key ID: 3DF82D8AB9211D4E
2 changed files with 17 additions and 3 deletions

View file

@ -283,6 +283,17 @@ func (r *Inputer) processRoomEvent(
logger.WithError(rejectionErr).Warnf("Event %s not allowed by auth events", event.EventID()) logger.WithError(rejectionErr).Warnf("Event %s not allowed by auth events", event.EventID())
} }
if event.Type() == gomatrixserverlib.MRoomRedaction {
ap, _ := authEvents.PowerLevels()
if ap != nil {
var powerLevels *gomatrixserverlib.PowerLevelContent
powerLevels, _ = ap.PowerLevels()
if powerLevels != nil {
redactAllowed = powerLevels.UserLevel(event.Sender()) >= powerLevels.Redact
}
}
}
// Accumulate the auth event NIDs. // Accumulate the auth event NIDs.
authEventIDs := event.AuthEventIDs() authEventIDs := event.AuthEventIDs()
authEventNIDs := make([]types.EventNID, 0, len(authEventIDs)) authEventNIDs := make([]types.EventNID, 0, len(authEventIDs))

View file

@ -966,11 +966,14 @@ func (d *EventDatabase) MaybeRedactEvent(
return nil return nil
} }
// 1. The power level of the redaction events sender is greater than or equal to the redact level. (redactAllowed)
// 2. The domain of the redaction events sender matches that of the original events sender.
_, sender1, _ := gomatrixserverlib.SplitID('@', redactedEvent.Sender()) _, sender1, _ := gomatrixserverlib.SplitID('@', redactedEvent.Sender())
_, sender2, _ := gomatrixserverlib.SplitID('@', redactionEvent.Sender()) _, sender2, _ := gomatrixserverlib.SplitID('@', redactionEvent.Sender())
if !redactAllowed || sender1 != sender2 { switch {
case redactAllowed:
// 1. The power level of the redaction events sender is greater than or equal to the redact level.
case sender1 == sender2:
// 2. The domain of the redaction events sender matches that of the original events sender.
default:
ignoreRedaction = true ignoreRedaction = true
return nil return nil
} }