|
|
@ -34,11 +34,14 @@ The rules are as follows:
|
|
|
|
algorithm described in the server specification.
|
|
|
|
algorithm described in the server specification.
|
|
|
|
3. If event does not have a `m.room.create` in its `auth_events`,
|
|
|
|
3. If event does not have a `m.room.create` in its `auth_events`,
|
|
|
|
reject.
|
|
|
|
reject.
|
|
|
|
4. If type is `m.room.aliases`:
|
|
|
|
4. If the create event content has the field `m.federate` set to `false`
|
|
|
|
|
|
|
|
and the sender domain of the event does not match the sender domain of
|
|
|
|
|
|
|
|
the create event, reject.
|
|
|
|
|
|
|
|
5. If type is `m.room.aliases`:
|
|
|
|
1. If event has no `state_key`, reject.
|
|
|
|
1. If event has no `state_key`, reject.
|
|
|
|
2. If sender's domain doesn't matches `state_key`, reject.
|
|
|
|
2. If sender's domain doesn't matches `state_key`, reject.
|
|
|
|
3. Otherwise, allow.
|
|
|
|
3. Otherwise, allow.
|
|
|
|
5. If type is `m.room.member`:
|
|
|
|
6. If type is `m.room.member`:
|
|
|
|
1. If no `state_key` key or `membership` key in `content`, reject.
|
|
|
|
1. If no `state_key` key or `membership` key in `content`, reject.
|
|
|
|
2. If `membership` is `join`:
|
|
|
|
2. If `membership` is `join`:
|
|
|
|
1. If the only previous event is an `m.room.create` and the
|
|
|
|
1. If the only previous event is an `m.room.create` and the
|
|
|
@ -95,15 +98,15 @@ The rules are as follows:
|
|
|
|
than the `sender`'s power level, allow.
|
|
|
|
than the `sender`'s power level, allow.
|
|
|
|
3. Otherwise, reject.
|
|
|
|
3. Otherwise, reject.
|
|
|
|
6. Otherwise, the membership is unknown. Reject.
|
|
|
|
6. Otherwise, the membership is unknown. Reject.
|
|
|
|
6. If the `sender`'s current membership state is not `join`, reject.
|
|
|
|
7. If the `sender`'s current membership state is not `join`, reject.
|
|
|
|
7. If type is `m.room.third_party_invite`:
|
|
|
|
8. If type is `m.room.third_party_invite`:
|
|
|
|
1. Allow if and only if `sender`'s current power level is greater
|
|
|
|
1. Allow if and only if `sender`'s current power level is greater
|
|
|
|
than or equal to the *invite level*.
|
|
|
|
than or equal to the *invite level*.
|
|
|
|
8. If the event type's *required power level* is greater than the
|
|
|
|
9. If the event type's *required power level* is greater than the
|
|
|
|
`sender`'s power level, reject.
|
|
|
|
`sender`'s power level, reject.
|
|
|
|
9. If the event has a `state_key` that starts with an `@` and does not
|
|
|
|
10. If the event has a `state_key` that starts with an `@` and does not
|
|
|
|
match the `sender`, reject.
|
|
|
|
match the `sender`, reject.
|
|
|
|
10. If type is `m.room.power_levels`:
|
|
|
|
11. If type is `m.room.power_levels`:
|
|
|
|
1. If `users` key in `content` is not a dictionary with keys that
|
|
|
|
1. If `users` key in `content` is not a dictionary with keys that
|
|
|
|
are valid user IDs with values that are integers (or a string
|
|
|
|
are valid user IDs with values that are integers (or a string
|
|
|
|
that is an integer), reject.
|
|
|
|
that is an integer), reject.
|
|
|
@ -127,14 +130,14 @@ The rules are as follows:
|
|
|
|
1. If the current value is equal to the `sender`'s current
|
|
|
|
1. If the current value is equal to the `sender`'s current
|
|
|
|
power level, reject.
|
|
|
|
power level, reject.
|
|
|
|
6. Otherwise, allow.
|
|
|
|
6. Otherwise, allow.
|
|
|
|
11. If type is `m.room.redaction`:
|
|
|
|
12. If type is `m.room.redaction`:
|
|
|
|
1. If the `sender`'s power level is greater than or equal to the
|
|
|
|
1. If the `sender`'s power level is greater than or equal to the
|
|
|
|
*redact level*, allow.
|
|
|
|
*redact level*, allow.
|
|
|
|
2. If the domain of the `event_id` of the event being redacted is
|
|
|
|
2. If the domain of the `event_id` of the event being redacted is
|
|
|
|
the same as the domain of the `event_id` of the
|
|
|
|
the same as the domain of the `event_id` of the
|
|
|
|
`m.room.redaction`, allow.
|
|
|
|
`m.room.redaction`, allow.
|
|
|
|
3. Otherwise, reject.
|
|
|
|
3. Otherwise, reject.
|
|
|
|
12. Otherwise, allow.
|
|
|
|
13. Otherwise, allow.
|
|
|
|
|
|
|
|
|
|
|
|
{{% boxes/note %}}
|
|
|
|
{{% boxes/note %}}
|
|
|
|
Some consequences of these rules:
|
|
|
|
Some consequences of these rules:
|
|
|
|