-
-
Notifications
You must be signed in to change notification settings - Fork 99
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add m.federate
into the auth rules
#1103
Changes from 2 commits
f49f2ab
fa4d1df
5a58eaf
21f7dfe
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Auth rules: Clarify behaviour around the `m.federate` field in `m.room.create` events. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this PR will also need adapting for v10 if we expect it to be included in Matrix 1.3 (otherwise it'll still need adapting, but with less urgency) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -34,11 +34,14 @@ The rules are as follows: | |
algorithm described in the server specification. | ||
3. If event does not have a `m.room.create` in its `auth_events`, | ||
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. | ||
Comment on lines
+37
to
+39
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. belatedly, a thought occurs to me: this is unclear about which create event we are talking about here. Do we mean the create event in the auth events (as mentioned on the line above), or the create event in the state at that point in the DAG (which is what the rest of the auth rules use). I mean, if the two are different, we have a problem too, but we should really be explicit here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. see also #1048 |
||
5. If type is `m.room.aliases`: | ||
1. If event has no `state_key`, reject. | ||
2. If sender's domain doesn't matches `state_key`, reject. | ||
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. | ||
2. If `membership` is `join`: | ||
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. | ||
3. Otherwise, reject. | ||
6. Otherwise, the membership is unknown. Reject. | ||
6. If the `sender`'s current membership state is not `join`, reject. | ||
7. If type is `m.room.third_party_invite`: | ||
7. If the `sender`'s current membership state is not `join`, reject. | ||
8. If type is `m.room.third_party_invite`: | ||
1. Allow if and only if `sender`'s current power level is greater | ||
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. | ||
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. | ||
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 | ||
are valid user IDs with values that are integers (or a string | ||
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 | ||
power level, reject. | ||
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 | ||
*redact level*, allow. | ||
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 | ||
`m.room.redaction`, allow. | ||
3. Otherwise, reject. | ||
12. Otherwise, allow. | ||
13. Otherwise, allow. | ||
|
||
{{% boxes/note %}} | ||
Some consequences of these rules: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.