Skip to content
Snippets Groups Projects
Commit 1e788db4 authored by Matthew Hodgson's avatar Matthew Hodgson
Browse files

add GDPR erase param to deactivate API

parent 784189b1
No related branches found
No related tags found
No related merge requests found
...@@ -47,6 +47,7 @@ class DeactivateAccountHandler(BaseHandler): ...@@ -47,6 +47,7 @@ class DeactivateAccountHandler(BaseHandler):
Args: Args:
user_id (str): ID of user to be deactivated user_id (str): ID of user to be deactivated
erase_data (bool): whether to GDPR-erase the user's data
Returns: Returns:
Deferred Deferred
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
from twisted.internet import defer from twisted.internet import defer
from six.moves import http_client
from synapse.api.constants import Membership from synapse.api.constants import Membership
from synapse.api.errors import AuthError, SynapseError, Codes, NotFoundError from synapse.api.errors import AuthError, SynapseError, Codes, NotFoundError
from synapse.types import UserID, create_requester from synapse.types import UserID, create_requester
...@@ -247,6 +249,15 @@ class DeactivateAccountRestServlet(ClientV1RestServlet): ...@@ -247,6 +249,15 @@ class DeactivateAccountRestServlet(ClientV1RestServlet):
@defer.inlineCallbacks @defer.inlineCallbacks
def on_POST(self, request, target_user_id): def on_POST(self, request, target_user_id):
body = parse_json_object_from_request(request)
erase = body.get("erase", False)
if not isinstance(erase, bool):
raise SynapseError(
http_client.BAD_REQUEST,
"Param 'erase' must be a boolean, if given",
Codes.BAD_JSON,
)
UserID.from_string(target_user_id) UserID.from_string(target_user_id)
requester = yield self.auth.get_user_by_req(request) requester = yield self.auth.get_user_by_req(request)
is_admin = yield self.auth.is_server_admin(requester.user) is_admin = yield self.auth.is_server_admin(requester.user)
...@@ -255,7 +266,7 @@ class DeactivateAccountRestServlet(ClientV1RestServlet): ...@@ -255,7 +266,7 @@ class DeactivateAccountRestServlet(ClientV1RestServlet):
raise AuthError(403, "You are not a server admin") raise AuthError(403, "You are not a server admin")
yield self._deactivate_account_handler.deactivate_account( yield self._deactivate_account_handler.deactivate_account(
target_user_id, False, target_user_id, erase,
) )
defer.returnValue((200, {})) defer.returnValue((200, {}))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment