summaryrefslogtreecommitdiff
path: root/Biz/PodcastItLater/Web.py
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-11-22 08:55:48 -0500
committerBen Sima <ben@bensima.com>2025-11-22 08:55:48 -0500
commitee7e4dfcfdf573a0a09078fc91033ecff0062856 (patch)
tree8a61a1a0a0d47d3b43db7263706a2b2211a39587 /Biz/PodcastItLater/Web.py
parentdbd846a335cc1c6e88d74f9444aa3374f2bb3c59 (diff)
parentf894391a7f38a03de3a11b06c95e8bbec291837a (diff)
Merge task t-1fbDyr2: Implement delete account functionality
Diffstat (limited to 'Biz/PodcastItLater/Web.py')
-rw-r--r--Biz/PodcastItLater/Web.py44
1 files changed, 16 insertions, 28 deletions
diff --git a/Biz/PodcastItLater/Web.py b/Biz/PodcastItLater/Web.py
index 0f095d3..348c847 100644
--- a/Biz/PodcastItLater/Web.py
+++ b/Biz/PodcastItLater/Web.py
@@ -1052,34 +1052,6 @@ def upgrade(request: Request) -> RedirectResponse:
return RedirectResponse(url="/pricing?error=checkout_failed")
-@app.get("/account")
-def account(request: Request) -> UI.AccountPage | RedirectResponse:
- """Display account management page."""
- user_id = request.session.get("user_id")
- if not user_id:
- return RedirectResponse(url="/?error=login_required")
-
- user = Core.Database.get_user_by_id(user_id)
- if not user:
- request.session.clear()
- return RedirectResponse(url="/?error=user_not_found")
-
- # Get usage stats
- period_start, period_end = Billing.get_period_boundaries(user)
- usage = Billing.get_usage(user_id, period_start, period_end)
-
- # Get limits
- tier = user.get("plan_tier", "free")
- limits = Billing.TIER_LIMITS.get(tier, Billing.TIER_LIMITS["free"])
-
- return UI.AccountPage(
- user=user,
- usage=usage,
- limits=limits,
- portal_url="/billing/portal" if tier == "paid" else None,
- )
-
-
@app.post("/logout")
def logout(request: Request) -> RedirectResponse:
"""Log out user."""
@@ -1274,6 +1246,22 @@ def account_page(request: Request) -> UI.AccountPage | RedirectResponse:
)
+@app.delete("/account")
+def delete_account(request: Request) -> Response:
+ """Delete user account."""
+ user_id = request.session.get("user_id")
+ if not user_id:
+ return RedirectResponse(url="/?error=login_required")
+
+ Core.Database.delete_user(user_id)
+ request.session.clear()
+
+ return Response(
+ "Account deleted",
+ headers={"HX-Redirect": "/?message=account_deleted"},
+ )
+
+
@app.post("/submit")
def submit_article( # noqa: PLR0911, PLR0914
request: Request,