Compare commits

...

2 Commits

Author SHA1 Message Date
Jonas Schäfer
fcfcdbeb23 Follow new role scheme in Prosody
Prosody changed its role scheme to only support a single primary role
for each user. In addition, the names of the built-in roles have been
changed. We thus follow those changes to be compatible with the most
recent trunk.

One open question is whether we should switch admin -> operator here,
too (operator being a server-wide admin), but so far there's no need
to.
2023-03-29 18:42:53 +02:00
Jonas Schäfer
fd566b7f30 Merge pull request #151 from snikket-im/fix/user-listing-roles
Make AdminUserInfo compatible with new API
2023-03-28 22:23:06 +02:00
3 changed files with 7 additions and 7 deletions

View File

@@ -77,7 +77,7 @@ class EditUserForm(BaseForm):
_l("Access Level"), _l("Access Level"),
choices=[ choices=[
("prosody:restricted", _("Limited")), ("prosody:restricted", _("Limited")),
("prosody:normal", _l("Normal user")), ("prosody:user", _l("Normal user")),
("prosody:admin", _l("Administrator")), ("prosody:admin", _l("Administrator")),
], ],
) )
@@ -116,7 +116,7 @@ async def edit_user(localpart: str) -> typing.Union[werkzeug.Response, str]:
await client.update_user( await client.update_user(
localpart, localpart,
display_name=form.display_name.data, display_name=form.display_name.data,
roles=[form.role.data], role=form.role.data,
) )
await flash( await flash(
@@ -131,7 +131,7 @@ async def edit_user(localpart: str) -> typing.Union[werkzeug.Response, str]:
if target_user_info.roles: if target_user_info.roles:
form.role.data = target_user_info.roles[0] form.role.data = target_user_info.roles[0]
else: else:
form.role.data = "prosody:normal" form.role.data = "prosody:user"
return await render_template( return await render_template(
"admin_edit_user.html", "admin_edit_user.html",

View File

@@ -885,7 +885,7 @@ class ProsodyClient:
localpart: str, localpart: str,
*, *,
display_name: typing.Optional[str], display_name: typing.Optional[str],
roles: typing.Optional[typing.Collection[str]], role: typing.Optional[str],
session: aiohttp.ClientSession, session: aiohttp.ClientSession,
) -> None: ) -> None:
payload: typing.Dict[str, typing.Any] = { payload: typing.Dict[str, typing.Any] = {
@@ -893,8 +893,8 @@ class ProsodyClient:
} }
if display_name is not None: if display_name is not None:
payload["display_name"] = display_name payload["display_name"] = display_name
if roles is not None: if role is not None:
payload["roles"] = list(roles) payload["role"] = role
async with session.put( async with session.put(
self._admin_v1_endpoint("/users/{}".format(localpart)), self._admin_v1_endpoint("/users/{}".format(localpart)),

View File

@@ -3,7 +3,7 @@
{% macro access_level_description(role, caller=None) %} {% macro access_level_description(role, caller=None) %}
{%- if role == "prosody:restricted" -%} {%- if role == "prosody:restricted" -%}
{% trans %}Limited users can interact with users on the same Snikket service and be members of circles.{% endtrans %} {% trans %}Limited users can interact with users on the same Snikket service and be members of circles.{% endtrans %}
{%- elif role == "prosody:normal" -%} {%- elif role == "prosody:user" -%}
{% trans %}Like limited users and can also interact with users on other Snikket services.{% endtrans %} {% trans %}Like limited users and can also interact with users on other Snikket services.{% endtrans %}
{%- elif role == "prosody:admin" -%} {%- elif role == "prosody:admin" -%}
{% trans %}Like normal users and can access the admin panel in the web portal.{% endtrans %} {% trans %}Like normal users and can access the admin panel in the web portal.{% endtrans %}