diff options
Diffstat (limited to 'Biz/PodcastItLater/Web.py')
| -rw-r--r-- | Biz/PodcastItLater/Web.py | 44 |
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, |
