|
|
@ -359,7 +359,7 @@ The rules are as follows:
|
|
|
|
1. If type is ``m.room.create``, allow if and only if it has no
|
|
|
|
1. If type is ``m.room.create``, allow if and only if it has no
|
|
|
|
previous events - *i.e.* it is the first event in the room.
|
|
|
|
previous events - *i.e.* it is the first event in the room.
|
|
|
|
|
|
|
|
|
|
|
|
2. If type is ``m.room.member``:
|
|
|
|
#. If type is ``m.room.member``:
|
|
|
|
|
|
|
|
|
|
|
|
a. If ``membership`` is ``join``:
|
|
|
|
a. If ``membership`` is ``join``:
|
|
|
|
|
|
|
|
|
|
|
@ -375,7 +375,7 @@ The rules are as follows:
|
|
|
|
|
|
|
|
|
|
|
|
#. Otherwise, reject.
|
|
|
|
#. Otherwise, reject.
|
|
|
|
|
|
|
|
|
|
|
|
b. If ``membership`` is ``invite``:
|
|
|
|
#. If ``membership`` is ``invite``:
|
|
|
|
|
|
|
|
|
|
|
|
i. If the ``sender``'s current membership state is not ``join``, reject.
|
|
|
|
i. If the ``sender``'s current membership state is not ``join``, reject.
|
|
|
|
|
|
|
|
|
|
|
@ -387,7 +387,7 @@ The rules are as follows:
|
|
|
|
|
|
|
|
|
|
|
|
#. Otherwise, reject.
|
|
|
|
#. Otherwise, reject.
|
|
|
|
|
|
|
|
|
|
|
|
c. If ``membership`` is ``leave``:
|
|
|
|
#. If ``membership`` is ``leave``:
|
|
|
|
|
|
|
|
|
|
|
|
i. If the ``sender`` matches ``state_key``, allow if and only if that user's
|
|
|
|
i. If the ``sender`` matches ``state_key``, allow if and only if that user's
|
|
|
|
current membership state is ``invite`` or ``join``.
|
|
|
|
current membership state is ``invite`` or ``join``.
|
|
|
@ -403,7 +403,7 @@ The rules are as follows:
|
|
|
|
|
|
|
|
|
|
|
|
#. Otherwise, reject.
|
|
|
|
#. Otherwise, reject.
|
|
|
|
|
|
|
|
|
|
|
|
d. If ``membership`` is ``ban``:
|
|
|
|
#. If ``membership`` is ``ban``:
|
|
|
|
|
|
|
|
|
|
|
|
i. If the ``sender``'s current membership state is not ``join``, reject.
|
|
|
|
i. If the ``sender``'s current membership state is not ``join``, reject.
|
|
|
|
|
|
|
|
|
|
|
@ -413,18 +413,18 @@ The rules are as follows:
|
|
|
|
|
|
|
|
|
|
|
|
#. Otherwise, reject.
|
|
|
|
#. Otherwise, reject.
|
|
|
|
|
|
|
|
|
|
|
|
e. Otherwise, the membership is unknown. Reject.
|
|
|
|
#. Otherwise, the membership is unknown. Reject.
|
|
|
|
|
|
|
|
|
|
|
|
3. If the ``sender``'s current membership state is not ``join``, reject.
|
|
|
|
#. If the ``sender``'s current membership state is not ``join``, reject.
|
|
|
|
|
|
|
|
|
|
|
|
4. If the event type's *required power level* is greater than the ``sender``'s power
|
|
|
|
#. If the event type's *required power level* is greater than the ``sender``'s power
|
|
|
|
level, reject.
|
|
|
|
level, reject.
|
|
|
|
|
|
|
|
|
|
|
|
5. If type is ``m.room.power_levels``:
|
|
|
|
#. If type is ``m.room.power_levels``:
|
|
|
|
|
|
|
|
|
|
|
|
a. If there is no previous ``m.room.power_levels`` event in the room, allow.
|
|
|
|
a. If there is no previous ``m.room.power_levels`` event in the room, allow.
|
|
|
|
|
|
|
|
|
|
|
|
b. For each of the keys ``users_default``, ``events_default``,
|
|
|
|
#. For each of the keys ``users_default``, ``events_default``,
|
|
|
|
``state_default``, ``ban``, ``redact``, ``kick``, ``invite``, as well as
|
|
|
|
``state_default``, ``ban``, ``redact``, ``kick``, ``invite``, as well as
|
|
|
|
each entry being changed under the ``events`` or ``users`` keys:
|
|
|
|
each entry being changed under the ``events`` or ``users`` keys:
|
|
|
|
|
|
|
|
|
|
|
@ -434,15 +434,15 @@ The rules are as follows:
|
|
|
|
#. If the new value is higher than the ``sender``'s current power level,
|
|
|
|
#. If the new value is higher than the ``sender``'s current power level,
|
|
|
|
reject.
|
|
|
|
reject.
|
|
|
|
|
|
|
|
|
|
|
|
c. For each entry being changed under the ``users`` key, other than the
|
|
|
|
#. For each entry being changed under the ``users`` key, other than the
|
|
|
|
``sender``'s own entry:
|
|
|
|
``sender``'s own entry:
|
|
|
|
|
|
|
|
|
|
|
|
i. If the current value is equal to the ``sender``'s current power level,
|
|
|
|
i. If the current value is equal to the ``sender``'s current power level,
|
|
|
|
reject.
|
|
|
|
reject.
|
|
|
|
|
|
|
|
|
|
|
|
d. Otherwise, allow.
|
|
|
|
#. Otherwise, allow.
|
|
|
|
|
|
|
|
|
|
|
|
6. If type is ``m.room.redaction``:
|
|
|
|
#. If type is ``m.room.redaction``:
|
|
|
|
|
|
|
|
|
|
|
|
a. If the ``sender``'s power level is greater than or equal to the *redact
|
|
|
|
a. If the ``sender``'s power level is greater than or equal to the *redact
|
|
|
|
level*, allow.
|
|
|
|
level*, allow.
|
|
|
@ -452,7 +452,7 @@ The rules are as follows:
|
|
|
|
|
|
|
|
|
|
|
|
#. Otherwise, reject.
|
|
|
|
#. Otherwise, reject.
|
|
|
|
|
|
|
|
|
|
|
|
7. Otherwise, allow.
|
|
|
|
#. Otherwise, allow.
|
|
|
|
|
|
|
|
|
|
|
|
.. NOTE::
|
|
|
|
.. NOTE::
|
|
|
|
|
|
|
|
|
|
|
|