mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-16 18:43:10 -06:00
Make redaction check easier to read; check redact PL
This commit is contained in:
parent
6b1c9eafa9
commit
b8aa0c7c92
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -966,11 +966,14 @@ func (d *EventDatabase) MaybeRedactEvent(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. The power level of the redaction event’s sender is greater than or equal to the redact level. (redactAllowed)
|
|
||||||
// 2. The domain of the redaction event’s sender matches that of the original event’s 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 event’s sender is greater than or equal to the redact level.
|
||||||
|
case sender1 == sender2:
|
||||||
|
// 2. The domain of the redaction event’s sender matches that of the original event’s sender.
|
||||||
|
default:
|
||||||
ignoreRedaction = true
|
ignoreRedaction = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue