-
Notifications
You must be signed in to change notification settings - Fork 377
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
MSC2213: Rejoinability of private/invite-only rooms #2213
base: old_master
Are you sure you want to change the base?
Conversation
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.
Some thoughts upon the first read.
This is a prerequisite for Canonical DMs and hasn't received a lot of traffic. We intend to make Canonical DMs a thing very soon, so in the interest of moving the ball forward: @mscbot fcp merge |
This FCP proposal has been cancelled by #2213 (comment). Team member @mscbot has proposed to merge this. The next step is review by the rest of the tagged people: Once at least 75% of reviewers approve (and there are no outstanding concerns), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for information about what commands tagged team members can give me. |
Cancelling FCP proposal as this proposal lacks an implementation. @mscbot fcp cancel |
1. If the previous membership is not explicitly `leave`, `rejoin_rule` does not apply. | ||
For example, bans still ban, invites still invite, and never having been in the room | ||
does not let you use `rejoin_rule` to get in. | ||
2. If the `rejoin_rule` is `forbidden`, or implied to be `forbidden`, reject. | ||
3. If the previous membership is explicitly `leave`, the server must look at the membership | ||
previous to that membership to make a decision: | ||
1. If the `rejoin_rule` is `join` and the membership previous to `leave` is not `join` | ||
then reject. Else accept. | ||
2. If the `rejoin_rule` is `invite` and the membership previous to `leave` is not | ||
`join` or `invite`, reject. Else accept. |
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.
1. If the previous membership is not explicitly `leave`, `rejoin_rule` does not apply. | |
For example, bans still ban, invites still invite, and never having been in the room | |
does not let you use `rejoin_rule` to get in. | |
2. If the `rejoin_rule` is `forbidden`, or implied to be `forbidden`, reject. | |
3. If the previous membership is explicitly `leave`, the server must look at the membership | |
previous to that membership to make a decision: | |
1. If the `rejoin_rule` is `join` and the membership previous to `leave` is not `join` | |
then reject. Else accept. | |
2. If the `rejoin_rule` is `invite` and the membership previous to `leave` is not | |
`join` or `invite`, reject. Else accept. | |
1. If the previous membership is not explicitly `leave`, `rejoin_rule` does not apply. | |
For example, bans still ban, invites still invite, and never having been in the room | |
does not let you use `rejoin_rule` to get in. The rejoin rule `block` is an exception, | |
where leaving a room for any reason prevents further rejoins, even if invited. | |
2. If the `rejoin_rule` is `forbidden`, or implied to be `forbidden`, reject. | |
3. If the previous membership is explicitly `leave`, the server must look at the membership | |
previous to that membership to make a decision: | |
1. If the `rejoin_rule` is `join` and the membership previous to `leave` is not `join` | |
then reject. Else accept. | |
2. If the `rejoin_rule` is `comeback` and the membership previous to `leave` is not | |
`join` or member was put into the leave state by some other member, then reject. | |
Else accept. | |
3. If the `rejoin_rule` is `invite` and the membership previous to `leave` is not | |
`join` or `invite`, reject. Else accept. |
* `invite`: Members which were previously invited or joined to the room can rejoin, | ||
provided they are now not banned. | ||
|
||
* `join`: Members which were previously joined to the room can rejoin, provided they | ||
are now not banned. | ||
|
||
* `forbidden`: This event cannot be used to authorize a rejoin (members must be | ||
explicitly invited back into the room). This is the default. |
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.
* `invite`: Members which were previously invited or joined to the room can rejoin, | |
provided they are now not banned. | |
* `join`: Members which were previously joined to the room can rejoin, provided they | |
are now not banned. | |
* `forbidden`: This event cannot be used to authorize a rejoin (members must be | |
explicitly invited back into the room). This is the default. | |
* `invite`: Members which were previously invited or joined to the room can rejoin, | |
provided they are now not banned. | |
*`comeback`: Members which were previously invited or joined to the room can rejoin, | |
provided they are now not kicked or banned. | |
* `join`: Members which were previously joined to the room can rejoin, provided they | |
are now not banned. | |
* `forbidden`: This event cannot be used to authorize a rejoin (members must be | |
explicitly invited back into the room). This is the default. | |
* `block`: A member quitting a room for any reason is treated as if irreversibly banned. | |
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.
Added comeback
rejoin rule, which will prevent a kicked former member from rejoining unless invited back; and block
rejoin rule where leaving a room will prevent from rejoining even if invited.
`m.room.join_rules` is expanded to have a new `rejoin_rule` field under `content`, | ||
preserved by the redaction algorithm. The `rejoin_rule` must be one of: |
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.
We probably want to add knock
to the list of rejoin_rule
options now that MSC2403 has merged.
I don't think restricted
(MSC3083) or knock_restricted
(MSC3787) would make much sense here unless you wanted to allow members to rejoin based on membership somewhere, but not allow new members to join based on that membership? Seems like a bit of an odd-case (and then you need to worry about the configuration of which rooms, etc.)
Rendered
Related issues (by subject):