You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
Markdown
53 lines
1.5 KiB
Markdown
4 years ago
|
---
|
||
|
title: Room Version 7
|
||
|
type: docs
|
||
|
weight: 60
|
||
|
---
|
||
|
|
||
|
This room version builds on [version 6](/rooms/v6) 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](/rooms/v6) 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](/rooms/v6#authorization-rules-for-events).
|