Room versions 8 and 9: Restricted rooms (#3387)
* Room versions 8 and 9: Restricted rooms MSCs: * https://github.com/matrix-org/matrix-doc/pull/3083 * https://github.com/matrix-org/matrix-doc/pull/3289 * https://github.com/matrix-org/matrix-doc/pull/3375 * Changelogs * Capitalization Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com> * Remove verbiage for spaces because they don't exist * Iterations on text * Another clarification * Make error code descriptions consistent * Apply suggestions from code review Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> * Incorporate from merge * Misc language update per review * Update accuracy before splitting auth rules * fix wtf moment * Fix up v8 and v9 to match "fully specify room versions" * Scope auth events selection to room version * Apply consistency * Add changelogs * Review part 1 * Apply suggestions from code review Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> * Split out redaction sections * Clarify general case of join conditions Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
This commit is contained in:
parent
3475ef62ab
commit
6c4aabd053
22 changed files with 772 additions and 39 deletions
|
@ -1984,6 +1984,12 @@ This room can only be joined if you were invited, and allows anyone to
|
|||
request an invite to the room. Note that this join rule is only available
|
||||
in room versions [which support knocking](/rooms/#feature-matrix).
|
||||
|
||||
{{% added-in v="1.2" %}} `restricted`
|
||||
This room can be joined if you were invited or if you are a member of another
|
||||
room listed in the join rules. If the server cannot verify membership for any
|
||||
of the listed rooms then you can only join with an invite. Note that this rule
|
||||
is only expected to work in room versions [which support it](/rooms/#feature-matrix).
|
||||
|
||||
The allowable state transitions of membership are:
|
||||
|
||||

|
||||
|
@ -2033,6 +2039,51 @@ server chose to auto-accept.
|
|||
|
||||
{{% http-api spec="client-server" api="knocking" %}}
|
||||
|
||||
##### Restricted rooms
|
||||
|
||||
{{% added-in v="1.2" %}}
|
||||
|
||||
Restricted rooms are rooms with a `join_rule` of `restricted`. These rooms
|
||||
are accompanied by "allow conditions" as described in the
|
||||
[`m.room.join_rules`](#mroomjoin_rules) state event.
|
||||
|
||||
If the user has an invite to the room then the restrictions will not affect
|
||||
them. They should be able to join by simply accepting the invite.
|
||||
|
||||
When joining without an invite, the server MUST verify that the requesting
|
||||
user meets at least one of the conditions. If no conditions can be verified
|
||||
or no conditions are satisfied, the user will not be able to join. When the
|
||||
join is happening over federation, the remote server will check the conditions
|
||||
before accepting the join. See the [Server-Server Spec](/server-server-api/#restricted-rooms)
|
||||
for more information.
|
||||
|
||||
If the room is `restricted` but no valid conditions are presented then the
|
||||
room is effectively invite only.
|
||||
|
||||
The user does not need to maintain the conditions in order to stay a member
|
||||
of the room: the conditions are only checked/evaluated during the join process.
|
||||
|
||||
###### Conditions
|
||||
|
||||
Currently there is only one condition available: `m.room_membership`. This
|
||||
condition requires the user trying to join the room to be a *joined* member
|
||||
of another room (specifically, the `room_id` accompanying the condition). For
|
||||
example, if `!restricted:example.org` wanted to allow joined members of
|
||||
`!other:example.org` to join, `!restricted:example.org` would have the following
|
||||
`content` for [`m.room.join_rules`](#mroomjoin_rules):
|
||||
|
||||
```json
|
||||
{
|
||||
"join_rule": "restricted",
|
||||
"allow": [
|
||||
{
|
||||
"room_id": "!other:example.org",
|
||||
"type": "m.room_membership"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Leaving rooms
|
||||
|
||||
A user can leave a room to stop receiving events for that room. A user
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue