From 54711675533ce58fdf3017f250e92a88db719aad Mon Sep 17 00:00:00 2001 From: JKFSOM Date: Tue, 28 Nov 2023 23:30:36 +0000 Subject: [PATCH] add soft delete support to "delete user" --- gotrue/_async/gotrue_admin_api.py | 5 +++-- gotrue/_sync/api.py | 11 +++++++++-- gotrue/_sync/gotrue_admin_api.py | 5 +++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/gotrue/_async/gotrue_admin_api.py b/gotrue/_async/gotrue_admin_api.py index 84aa5eaa..3572e04b 100644 --- a/gotrue/_async/gotrue_admin_api.py +++ b/gotrue/_async/gotrue_admin_api.py @@ -147,14 +147,15 @@ async def update_user_by_id( xform=parse_user_response, ) - async def delete_user(self, id: str) -> None: + async def delete_user(self, id: str, should_soft_delete: bool = False) -> None: """ Delete a user. Requires a `service_role` key. This function should only be called on a server. Never expose your `service_role` key in the browser. """ - return await self._request("DELETE", f"admin/users/{id}") + body = {"should_soft_delete": should_soft_delete} + return await self._request("DELETE", f"admin/users/{id}", body=body) async def _list_factors( self, diff --git a/gotrue/_sync/api.py b/gotrue/_sync/api.py index abbdc480..24dc1a8d 100644 --- a/gotrue/_sync/api.py +++ b/gotrue/_sync/api.py @@ -529,7 +529,9 @@ def update_user( response = self.http_client.put(url, json=data, headers=headers) return User.parse_response(response) - def delete_user(self, *, uid: str, jwt: str) -> None: + def delete_user( + self, *, uid: str, jwt: str, should_soft_delete: bool = False + ) -> None: """Delete a user. Requires a `service_role` key. This function should only be called on a server. @@ -541,6 +543,8 @@ def delete_user(self, *, uid: str, jwt: str) -> None: The user uid you want to remove. jwt : str A valid, logged-in JWT. + should_soft_delete : bool + If true, then the user will be soft-deleted from the auth schema. Returns ------- @@ -554,7 +558,10 @@ def delete_user(self, *, uid: str, jwt: str) -> None: """ headers = self._create_request_headers(jwt=jwt) url = f"{self.url}/admin/users/{uid}" - response = self.http_client.delete(url, headers=headers) + body = { + "should_soft_delete": should_soft_delete, + } + response = self.http_client.delete(url, json=body, headers=headers) return check_response(response) def refresh_access_token(self, *, refresh_token: str) -> Session: diff --git a/gotrue/_sync/gotrue_admin_api.py b/gotrue/_sync/gotrue_admin_api.py index 944db594..388c7c97 100644 --- a/gotrue/_sync/gotrue_admin_api.py +++ b/gotrue/_sync/gotrue_admin_api.py @@ -147,14 +147,15 @@ def update_user_by_id( xform=parse_user_response, ) - def delete_user(self, id: str) -> None: + def delete_user(self, id: str, should_soft_delete: bool = False) -> None: """ Delete a user. Requires a `service_role` key. This function should only be called on a server. Never expose your `service_role` key in the browser. """ - return self._request("DELETE", f"admin/users/{id}") + body = {"should_soft_delete": should_soft_delete} + return self._request("DELETE", f"admin/users/{id}", body=body) def _list_factors( self,