diff --git a/xep-0045.xml b/xep-0045.xml index 07f91955e..b85f82023 100644 --- a/xep-0045.xml +++ b/xep-0045.xml @@ -46,6 +46,12 @@ &stpeter; + + 1.34.7 + 2024-07-05 + gk +

Improve consistency of role and affiliation change notifications

+
1.34.6 2024-05-01 @@ -1118,6 +1124,57 @@ + +

When the role or affiliation of a user is changed, notifications of such a change uses stanzas that include an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child, with the 'role' and/or 'affiliation' attribute set to a value of new role or affiliation.

+

If the user is in the room, the service MUST send updated presence from this individual's &OCCUPANTJID; to all occupants, indicating the change in affiliation or role, by including such an <x/> element.

+ + + + + +]]> + + + + + +]]> +

If the user is not in the room, the service MAY send a message from the room itself to the room occupants, indicating the change in affiliation or role, by including such an <x/> element. As roles not necessarily persist across a user's visits to the room, the value of the 'role' attribute may differ from the equivalent notification sent when the affected is present in the room (as described above).

+ + + + + +]]> + + + + + +]]> +
@@ -2960,7 +3017,7 @@ to='crone1@shakespeare.lit/desktop' type='result'/> ]]> -

The service MUST then send updated presence from this individual's &OCCUPANTJID; to all occupants, indicating the addition of voice privileges by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'role' attribute set to a value of "participant".

+

The service MUST then send to all occupants a notification indicating the addition of voice privileges, as described under Notifications of Changes, using the 'role' attribute set to a value of "participant".

]]> -

The service MUST then send updated presence from this individual to all occupants, indicating the removal of voice privileges by sending a presence element that contains an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'role' attribute set to a value of "visitor".

+

The service MUST then send to all occupants a notification indicating the removal of voice privileges, as described under Notifications of Changes, using the 'role' attribute set to a value of "visitor".

]]> -

The service MUST then send updated presence for any affected individuals to all occupants, indicating the change in voice privileges by sending the appropriate extended presence stanzas as described in the foregoing use cases.

+

The service MUST then send to all occupants a notification indicating changes in voice privilege for any affected individual, as described under Notifications of Changes as described in the foregoing use cases.

As noted, voice privileges cannot be revoked from a room owner or room admin, nor from any user with a higher affiliation than the moderator making the request. If a room admin attempts to revoke voice privileges from such a user by modifying the voice list, the service MUST deny the request and return a ¬allowed; error to the sender:

]]> -

If a moderator approves the voice request, the service shall grant voice to the occupant and send a presence update as described in the Granting Voice to a Visitor section of this document.

+

If a moderator approves the voice request, the service shall grant voice to the occupant and send notifications as described in the Granting Voice to a Visitor section of this document.

@@ -3372,7 +3429,7 @@ to='crone1@shakespeare.lit/desktop' type='result'/> ]]> -

If the user is in the room, the service MUST then send updated presence from this individual to all occupants, indicating the granting of membership by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "member".

+

The service MUST then send to all occupants a notification indicating the granting of membership, as described under Notifications of Changes, using the 'affiliation' attribute set to a value of "member".

]]> -

The service MUST then send updated presence from this individual to all occupants, indicating the loss of membership by sending a presence element that contains an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "none".

+

The service MUST then send to all occupants a notification indicating the loss of membership, as described under Notifications of Changes, using the 'affiliation' attribute set to a value of "none".

The service MUST change the affiliation of any affected user. If the user has been removed from the member list, the service MUST change the user's affiliation from "member" to "none". If the user has been added to the member list, the service MUST change the user's affiliation to "member".

If a removed member is currently in a members-only room, the service SHOULD kick the occupant by changing the removed member's role to "none" and send appropriate presence to the removed member as previously described. The service MUST subsequently refuse entry to the user.

-

For all room types, the service MUST send updated presence from this individual to all occupants, indicating the change in affiliation by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "none".

+

For all room types, the service MUST then send to all occupants a notification indicating the change in affiliation, as described under Notifications of Changes, using the 'affiliation' attribute set to a value of "none".

]]>

Invitations sent through an open room MUST NOT trigger the addition of the invitee to the member list.

-

If a user is added to the member list of an open room and the user is in the room, the service MUST send updated presence from this individual to all occupants, indicating the change in affiliation by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "member".

+

If a user is added to the member list of an open room, the service MUST then send to all occupants a notification indicating the change in affiliation, as described under Notifications of Changes, using the 'affiliation' attribute set to a value of "member".

]]> -

The service MUST then send updated presence from this individual to all occupants, indicating the addition of moderator status by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'role' attribute set to a value of "moderator".

+

The service MUST then send to all occupants a notification indicating the addition of moderator status, as described under Notifications of Changes, using the 'role' attribute set to a value of "moderator".

]]> -

The service MUST then send updated presence from this individual to all occupants, indicating the removal of moderator status by sending a presence element that contains an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'role' attribute set to a value of "participant".

+

The service MUST then send to all occupants a notification indicating the removal of moderator status, as described under Notifications of Changes, using the 'role' attribute set to a value of "participant".

]]> -

The service MUST then send updated presence for any affected individuals to all occupants, indicating the change in moderator status by sending the appropriate extended presence stanzas as described in the foregoing use cases.

+

For any affected user, the service MUST then send to all occupants a notification indicating the change of moderator status, as described under Notifications of Changes, using the appropriate 'role' attribute value as described in the foregoing use cases.

As noted, moderator status cannot be revoked from a room owner or room admin. If a room admin attempts to revoke moderator status from such a user by modifying the moderator list, the service MUST deny the request and return a ¬allowed; error to the sender:

]]> -

If the user is in the room, the service MUST then send updated presence from this individual to all occupants, indicating the granting of owner status by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "owner" and the 'role' attribute set to an appropriate value given the affiliation and room type ("moderator" is recommended).

+

The service MUST then send to all occupants a notification indicating the granting of owner status, as described under Notifications of Changes, using the 'affiliation' attribute set to a value of "owner" and the 'role' attribute set to an appropriate value given the affiliation and room type ("moderator" is recommended).

-[ ... ] -]]> -

If the user is not in the room, the service MAY send a message from the room itself to the room occupants, indicating the granting of owner status by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "owner".

- - - - - - [ ... ] ]]> @@ -4606,7 +4648,7 @@ to='crone1@shakespeare.lit/desktop' type='result'/> ]]> -

If the user is in the room, the service MUST then send updated presence from this individual to all occupants, indicating the loss of owner status by sending a presence element that contains an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value other than "owner" and the 'role' attribute set to an appropriate value:

+

The service MUST then send to all occupants a notification indicating the loss of owner status, as described under Notifications of Changes, using the 'affiliation' attribute set to a value other than "owner" and the 'role' attribute set to an appropriate value:

]]> -

The service MUST also send presence notifications related to any affiliation changes that result from modifying the owner list as previously described.

+

The service MUST then send to all occupants a notification related to any affiliation changes that result from modifying the owner list as previously described.

@@ -4715,7 +4757,7 @@ to='crone1@shakespeare.lit/desktop' type='result'/> ]]> -

If the user is in the room, the service MUST then send updated presence from this individual to all occupants, indicating the granting of admin status by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "admin" and the 'role' attribute set to an appropriate value given the affiliation and room type (typically "moderator").

+

The service MUST then send to all occupants a notification indicating the granting of admin status, as described under Notifications of Changes, using the 'affiliation' attribute set to a value of "admin" and the 'role' attribute set to an appropriate value given the affiliation and room type (typically "moderator").

-[ ... ] -]]> -

If the user is not in the room, the service MAY send a message from the room itself to the room occupants, indicating the granting of admin status by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value of "admin".

- - - - - - [ ... ] ]]>
@@ -4780,7 +4807,7 @@ to='crone1@shakespeare.lit/desktop' type='result'/> ]]> -

If the user is in the room, the service MUST then send updated presence from this individual to all occupants, indicating the loss of admin status by sending a presence element that contains an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value other than "admin" or "owner" and the 'role' attribute set to an appropriate value given the affiliation level and the room type (typically "participant").

+

The service MUST then send to all occupants a notification indicating the loss of admin status, as described under Notifications of Changes, using the 'affiliation' attribute set to a value other than "admin" or "owner" and the 'role' attribute set to an appropriate value given the affiliation level and the room type (typically "participant").

-[ ... ] -]]> -

If the user is not in the room, the service MAY send a message from the room itself to the room occupants, indicating the loss of admin status by including an <x/> element qualified by the 'http://jabber.org/protocol/muc#user' namespace and containing an <item/> child with the 'affiliation' attribute set to a value other than "admin".

- - - - - - [ ... ] ]]> @@ -4873,7 +4885,7 @@ to='crone1@shakespeare.lit/desktop' type='result'/> ]]> -

The service MUST also send presence notifications related to any affiliation changes that result from modifying the admin list as previously described.

+

The service MUST also send notifications related to any affiliation changes that result from modifying the admin list as previously described.