1.5 KiB
title | type | weight |
---|---|---|
Room Version 7 | docs | 60 |
This room version builds on version 6 to introduce knocking as a possible join rule and membership state.
Client considerations
This is the first room version to support knocking completely. As such, users will not be able to knock on rooms which are not based off v7.
Server implementation components
{{% boxes/warning %}} The information contained in this section is strictly for server implementors. Applications which use the Client-Server API are generally unaffected by the intricacies contained here. The section above regarding client considerations is the resource that Client-Server API use cases should reference. {{% /boxes/warning %}}
Room version 7 adds new authorization rules for events to support knocking. Room version 6 has details of other authorization rule changes, as do the versions v6 is based upon.
For checks perfomed upon m.room.member
events, the following conditions
are added in context:
If type is `m.room.member`:
...
* If `membership` is `ban`:
...
* If `membership` is `knock`:
i. If the `join_rule` is anything other than `knock`, reject.
ii. If `sender` does not match `state_key`, reject.
iii. If the `sender`'s current membership is not `ban`, `invite`, or `join`, allow.
iv. Otherwise, reject.
...
The remaining rules are the same as in room version 6.