mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-15 19:03:09 -06:00
41 lines
990 B
Go
41 lines
990 B
Go
package common
|
|
|
|
import "github.com/matrix-org/gomatrixserverlib"
|
|
|
|
func ValidateRedaction(
|
|
redacted, redaction *gomatrixserverlib.Event,
|
|
) (badEvents, needPowerLevelCheck bool, err error) {
|
|
// Don't allow redaction of events in different rooms
|
|
if redaction.RoomID() != redacted.RoomID() {
|
|
return true, false, nil
|
|
}
|
|
|
|
// Don't allow an event to redact itself
|
|
if redaction.Redacts() == redaction.EventID() {
|
|
return true, false, nil
|
|
}
|
|
|
|
// Don't allow two events to redact each other
|
|
if redacted.Redacts() == redaction.EventID() {
|
|
return true, false, nil
|
|
}
|
|
|
|
var expectedDomain, redactorDomain gomatrixserverlib.ServerName
|
|
if _, expectedDomain, err = gomatrixserverlib.SplitID(
|
|
'@', redacted.Sender(),
|
|
); err != nil {
|
|
return false, false, err
|
|
}
|
|
if _, redactorDomain, err = gomatrixserverlib.SplitID(
|
|
'@', redaction.Sender(),
|
|
); err != nil {
|
|
return false, false, err
|
|
}
|
|
|
|
if expectedDomain != redactorDomain {
|
|
return false, true, err
|
|
}
|
|
|
|
return false, false, nil
|
|
}
|