Skip to content

Commit 4b4180b

Browse files
committed
add pydantic model + comment
1 parent 7975a81 commit 4b4180b

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

synapse/rest/admin/users.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@
2727

2828
import attr
2929

30+
from synapse._pydantic_compat import HAS_PYDANTIC_V2
3031
from synapse.api.constants import Direction, UserTypes
3132
from synapse.api.errors import Codes, NotFoundError, SynapseError
3233
from synapse.http.servlet import (
3334
RestServlet,
3435
assert_params_in_dict,
36+
parse_and_validate_json_object_from_request,
3537
parse_boolean,
3638
parse_enum,
3739
parse_integer,
@@ -46,13 +48,20 @@
4648
assert_user_is_admin,
4749
)
4850
from synapse.rest.client._base import client_patterns
51+
from synapse.rest.models import RequestBodyModel
4952
from synapse.storage.databases.main.registration import ExternalIDReuseException
5053
from synapse.storage.databases.main.stats import UserSortOrder
5154
from synapse.types import JsonDict, JsonMapping, UserID
5255

5356
if TYPE_CHECKING:
5457
from synapse.server import HomeServer
5558

59+
if TYPE_CHECKING or HAS_PYDANTIC_V2:
60+
from pydantic.v1 import StrictBool
61+
else:
62+
from pydantic import StrictBool
63+
64+
5665
logger = logging.getLogger(__name__)
5766

5867

@@ -740,6 +749,9 @@ def __init__(self, hs: "HomeServer"):
740749
self.is_mine = hs.is_mine
741750
self.store = hs.get_datastores().main
742751

752+
class PutBody(RequestBodyModel):
753+
suspend: StrictBool
754+
743755
async def on_PUT(
744756
self, request: SynapseRequest, target_user_id: str
745757
) -> Tuple[int, JsonDict]:
@@ -752,8 +764,8 @@ async def on_PUT(
752764
if not await self.store.get_user_by_id(target_user_id):
753765
raise NotFoundError("User not found")
754766

755-
body = parse_json_object_from_request(request, allow_empty_body=True)
756-
suspend = body.get("suspend", False)
767+
body = parse_and_validate_json_object_from_request(request, self.PutBody)
768+
suspend = body.suspend
757769
await self.store.set_user_suspended_status(target_user_id, suspend)
758770

759771
return HTTPStatus.OK, {f"user_{target_user_id}_suspended": suspend}

synapse/rest/client/room.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1119,7 +1119,7 @@ async def _do(
11191119
if event.sender != requester.user.to_string():
11201120
raise SynapseError(
11211121
403,
1122-
"Only events created by the requester may be redacted while account is suspended.",
1122+
"You can only redact your own events while account is suspended.",
11231123
Codes.USER_ACCOUNT_SUSPENDED,
11241124
)
11251125

0 commit comments

Comments
 (0)