mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-28 07:00:51 +03:00
Fill out power level bits in the spec
This commit is contained in:
parent
da3e04df8b
commit
46ac4a2f85
1 changed files with 63 additions and 42 deletions
|
@ -428,9 +428,10 @@ event also has a ``creator`` key which contains the user ID of the room
|
|||
creator. It will also generate several other events in order to manage
|
||||
permissions in this room. This includes:
|
||||
|
||||
- ``m.room.power_levels`` : Sets the authority of the room creator.
|
||||
- ``m.room.power_levels`` : Sets the power levels of users.
|
||||
- ``m.room.join_rules`` : Whether the room is "invite-only" or not.
|
||||
- ``m.room.add_state_level``
|
||||
- ``m.room.add_state_level``: The power level required in order to
|
||||
add new state to the room (as opposed to updating exisiting state)
|
||||
- ``m.room.send_event_level`` : The power level required in order to
|
||||
send a message in this room.
|
||||
- ``m.room.ops_level`` : The power level required in order to kick or
|
||||
|
@ -463,6 +464,27 @@ Permissions
|
|||
Link through to respective sections where necessary. How does this tie in with permissions, e.g.
|
||||
give example of creating a read-only room.
|
||||
|
||||
Permissions for rooms are done via the concept of power levels - to do any
|
||||
action in a room a user must have a suitable power level.
|
||||
|
||||
Power levels for users are defined in ``m.room.power_levels``, where both
|
||||
a default and specific users' power levels can be set. By default all users
|
||||
have a power level of 0.
|
||||
|
||||
State events may contain a ``required_power_level`` key, which indicates the
|
||||
minimum power a user must have before they can update that state key. The only
|
||||
exception to this is when a user leaves a room.
|
||||
|
||||
To perform certain actions there are additional power level requirements
|
||||
defined in the following state events:
|
||||
|
||||
- ``m.room.send_event_level`` defines the minimum level for sending non-state
|
||||
events. Defaults to 5.
|
||||
- ``m.room.add_state_level`` defines the minimum level for adding new state,
|
||||
rather than updating existing state. Defaults to 5.
|
||||
- ``m.room.ops_level`` defines the minimum levels to ban and kick other users.
|
||||
This defaults to a kick and ban levels of 5 each.
|
||||
|
||||
|
||||
Joining rooms
|
||||
-------------
|
||||
|
@ -797,89 +819,88 @@ prefixed with ``m.``
|
|||
to force this state change directly will fail. See the `Rooms`_ section for how to
|
||||
use the membership APIs.
|
||||
|
||||
``m.room.config``
|
||||
``m.room.create``
|
||||
Summary:
|
||||
The room config.
|
||||
The first event in the room.
|
||||
Type:
|
||||
State event
|
||||
JSON format:
|
||||
TODO
|
||||
``{ "creator": "string"}``
|
||||
Example:
|
||||
TODO
|
||||
``{ "creator": "@user:example.com" }``
|
||||
Description:
|
||||
TODO : What it represents, What are the valid keys / values and what they represent, When is this event emitted and by what
|
||||
|
||||
``m.room.invite_join``
|
||||
Summary:
|
||||
TODO.
|
||||
Type:
|
||||
State event
|
||||
JSON format:
|
||||
TODO
|
||||
Example:
|
||||
TODO
|
||||
Description:
|
||||
TODO : What it represents, What are the valid keys / values and what they represent, When is this event emitted and by what
|
||||
This is the first event in a room and cannot be changed. It acts as the
|
||||
root of all other events.
|
||||
|
||||
``m.room.join_rules``
|
||||
Summary:
|
||||
TODO.
|
||||
Descripes how/if people are allowed to join.
|
||||
Type:
|
||||
State event
|
||||
JSON format:
|
||||
TODO
|
||||
``{ "join_rule": "enum [ public|knock|invite|private ]" }``
|
||||
Example:
|
||||
TODO
|
||||
``{ "join_rule": "public" }``
|
||||
Description:
|
||||
TODO : What it represents, What are the valid keys / values and what they represent, When is this event emitted and by what
|
||||
TODO : Use docs/models/rooms.rst
|
||||
|
||||
``m.room.power_levels``
|
||||
Summary:
|
||||
TODO.
|
||||
Defines the power levels of users in the room.
|
||||
Type:
|
||||
State event
|
||||
JSON format:
|
||||
TODO
|
||||
``{ "<user_id>": <int>, ..., "default": <int>}``
|
||||
Example:
|
||||
TODO
|
||||
``{ "@user:example.com": 5, "@user2:example.com": 10, "default": 0 }``
|
||||
Description:
|
||||
TODO : What it represents, What are the valid keys / values and what they represent, When is this event emitted and by what
|
||||
If a user is in the list, then they have the associated power level.
|
||||
Otherwise they have the default level. If not ``default`` key is supplied,
|
||||
it is assumed to be 0.
|
||||
|
||||
``m.room.add_state_level``
|
||||
Summary:
|
||||
TODO.
|
||||
Defines the minimum power level a user needs to add state.
|
||||
Type:
|
||||
State event
|
||||
JSON format:
|
||||
TODO
|
||||
``{ "level": <int> }``
|
||||
Example:
|
||||
TODO
|
||||
``{ "level": 5 }``
|
||||
Description:
|
||||
TODO : What it represents, What are the valid keys / values and what they represent, When is this event emitted and by what
|
||||
To add a new piece of state to the room a user must have the given power
|
||||
level. This does not apply to updating current state, which is goverened
|
||||
by the ``required_power_level`` event key.
|
||||
|
||||
``m.room.send_event_level``
|
||||
Summary:
|
||||
TODO.
|
||||
Defines the minimum power level a user needs to send an event.
|
||||
Type:
|
||||
State event
|
||||
JSON format:
|
||||
TODO
|
||||
``{ "level": <int> }``
|
||||
Example:
|
||||
TODO
|
||||
``{ "level": 0 }``
|
||||
Description:
|
||||
TODO : What it represents, What are the valid keys / values and what they represent, When is this event emitted and by what
|
||||
To send a new event into the room a user must have at least this power
|
||||
level. This allows ops to make the room read only by increasing this level,
|
||||
or muting individual users by lowering their power level below this
|
||||
threshold.
|
||||
|
||||
``m.room.ops_levels``
|
||||
Summary:
|
||||
TODO.
|
||||
Defines the minimum power levels that a user must have before they can
|
||||
kick and/or ban other users.
|
||||
Type:
|
||||
State event
|
||||
JSON format:
|
||||
TODO
|
||||
``{ "ban_level": <int>, "kick_level": <int> }``
|
||||
Example:
|
||||
TODO
|
||||
``{ "ban_level": 5, "kick_level": 5 }``
|
||||
Description:
|
||||
TODO : What it represents, What are the valid keys / values and what they represent, When is this event emitted and by what
|
||||
This defines who can ban and/or kick people in the room. Most of the time
|
||||
``ban_level`` will be greater than or equal to ``kick_level`` since
|
||||
banning is more severe than kicking.
|
||||
|
||||
``m.room.message``
|
||||
Summary:
|
||||
|
|
Loading…
Reference in a new issue