Skip to content

Commit

Permalink
add soft delete support to "delete user" (#376)
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrew Smith authored Nov 30, 2023
2 parents ede20fe + 5471167 commit 08bada3
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 6 deletions.
5 changes: 3 additions & 2 deletions gotrue/_async/gotrue_admin_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
11 changes: 9 additions & 2 deletions gotrue/_sync/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
-------
Expand All @@ -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:
Expand Down
5 changes: 3 additions & 2 deletions gotrue/_sync/gotrue_admin_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 08bada3

Please sign in to comment.