summaryrefslogtreecommitdiff
path: root/Biz/PodcastItLater/Web.py
diff options
context:
space:
mode:
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,