| 1 |
1 |
|
<div class="tab-docs"><a href="/docs/account">Docs: Account →</a></div>
|
| 2 |
2 |
|
|
| 3 |
|
- |
<div class="form-section">
|
| 4 |
|
- |
<h2>Account</h2>
|
| 5 |
|
- |
{% if !email_verified %}
|
| 6 |
|
- |
<div style="background: var(--warning-bg); border: 1px solid var(--warning-border); padding: 0.75rem 1rem; margin-bottom: 1rem; font-size: 0.9rem;">
|
| 7 |
|
- |
<strong>Email not verified.</strong> Some features require a verified email.
|
| 8 |
|
- |
<button class="secondary small" style="margin-left: 0.5rem;"
|
| 9 |
|
- |
hx-post="/api/resend-verification"
|
| 10 |
|
- |
hx-target="#verify-nudge-result"
|
| 11 |
|
- |
hx-swap="innerHTML">Resend verification email</button>
|
| 12 |
|
- |
<span id="verify-nudge-result"></span>
|
| 13 |
|
- |
</div>
|
| 14 |
|
- |
{% endif %}
|
| 15 |
|
- |
<div class="form-group">
|
| 16 |
|
- |
<label for="email">Email</label>
|
| 17 |
|
- |
<input type="email" id="email" value="{{ user.email }}" disabled>
|
| 18 |
|
- |
<div class="hint">Contact support to update your email address</div>
|
| 19 |
|
- |
</div>
|
| 20 |
|
- |
<div class="form-group">
|
| 21 |
|
- |
<label for="username">Username</label>
|
| 22 |
|
- |
<input type="text" id="username" value="{{ user.username }}" disabled>
|
| 23 |
|
- |
<div class="hint">Username cannot be changed</div>
|
| 24 |
|
- |
</div>
|
| 25 |
|
- |
</div>
|
| 26 |
|
- |
|
| 27 |
3 |
|
{% if !moderation_active.is_empty() || !moderation_history.is_empty() %}
|
| 28 |
4 |
|
<div class="form-section">
|
| 29 |
5 |
|
<h2>Account Status</h2>
|
| 61 |
37 |
|
|
| 62 |
38 |
|
<div class="section-group-label">Security</div>
|
| 63 |
39 |
|
|
|
40 |
+ |
<div style="background: var(--surface-muted); padding: 1rem 1.25rem; margin-bottom: 1.5rem; font-size: 0.9rem;">
|
|
41 |
+ |
<div style="font-weight: bold; margin-bottom: 0.5rem;">Secure your account</div>
|
|
42 |
+ |
<div style="display: flex; flex-direction: column; gap: 0.25rem; opacity: 0.8;">
|
|
43 |
+ |
<span>1. Use a strong, unique password</span>
|
|
44 |
+ |
<span>2. Enable two-factor authentication (authenticator app or passkey)</span>
|
|
45 |
+ |
<span>3. Review active sessions periodically</span>
|
|
46 |
+ |
</div>
|
|
47 |
+ |
</div>
|
|
48 |
+ |
|
|
49 |
+ |
{% if !email_verified %}
|
|
50 |
+ |
<div style="background: var(--warning-bg); border: 1px solid var(--warning-border); padding: 0.75rem 1rem; margin-bottom: 1rem; font-size: 0.9rem;">
|
|
51 |
+ |
<strong>Email not verified.</strong> Some features require a verified email.
|
|
52 |
+ |
<button class="secondary small" style="margin-left: 0.5rem;"
|
|
53 |
+ |
hx-post="/api/resend-verification"
|
|
54 |
+ |
hx-target="#verify-nudge-result"
|
|
55 |
+ |
hx-swap="innerHTML">Resend verification email</button>
|
|
56 |
+ |
<span id="verify-nudge-result"></span>
|
|
57 |
+ |
</div>
|
|
58 |
+ |
{% endif %}
|
|
59 |
+ |
|
| 64 |
60 |
|
<details class="form-section">
|
| 65 |
61 |
|
<summary><h2>Change Password</h2></summary>
|
| 66 |
62 |
|
<form hx-put="/api/users/me/password"
|
| 112 |
108 |
|
{% include "partials/tabs/user_sessions.html" %}
|
| 113 |
109 |
|
</details>
|
| 114 |
110 |
|
|
|
111 |
+ |
<div class="section-group-label">Account</div>
|
|
112 |
+ |
|
|
113 |
+ |
<div class="form-section">
|
|
114 |
+ |
<div class="form-group">
|
|
115 |
+ |
<label for="email">Email</label>
|
|
116 |
+ |
<input type="email" id="email" value="{{ user.email }}" disabled>
|
|
117 |
+ |
<div class="hint">Contact support to update your email address</div>
|
|
118 |
+ |
</div>
|
|
119 |
+ |
<div class="form-group">
|
|
120 |
+ |
<label for="username">Username</label>
|
|
121 |
+ |
<input type="text" id="username" value="{{ user.username }}" disabled>
|
|
122 |
+ |
<div class="hint">Username cannot be changed</div>
|
|
123 |
+ |
</div>
|
|
124 |
+ |
</div>
|
|
125 |
+ |
|
| 115 |
126 |
|
<div class="section-group-label">Preferences</div>
|
| 116 |
127 |
|
|
| 117 |
128 |
|
<details class="form-section">
|
| 194 |
205 |
|
{% if can_create_projects && !creator_paused %}
|
| 195 |
206 |
|
<details class="form-section">
|
| 196 |
207 |
|
<summary><h2>Pause Creator Account</h2></summary>
|
| 197 |
|
- |
<p class="muted" style="margin-bottom: 1rem; text-align: left;">
|
| 198 |
|
- |
Pause your creator account to stop paying your subscription. Existing fan subscriptions will expire at the end of their billing period. One-time purchases remain accessible. Your content stays hosted indefinitely. You can resume at any time by re-subscribing to a tier.
|
|
208 |
+ |
<p class="muted" style="margin-bottom: 0.75rem; text-align: left;">
|
|
209 |
+ |
Stop paying your subscription. Existing fan subscriptions expire at their billing period end. One-time purchases remain accessible. Content stays hosted. Resume anytime by re-subscribing.
|
|
210 |
+ |
</p>
|
|
211 |
+ |
<p class="muted" style="margin-bottom: 1rem; text-align: left; font-size: 0.85rem; opacity: 0.6;">
|
|
212 |
+ |
<strong>Pause vs Delete:</strong> Pausing keeps your content and account intact. Deleting is permanent.
|
| 199 |
213 |
|
</p>
|
| 200 |
214 |
|
<button class="danger"
|
| 201 |
215 |
|
hx-post="/api/users/me/pause-creator"
|
| 202 |
|
- |
hx-confirm="Pause your creator account? Your subscription will be canceled and no new sales can be made. Existing fan subscriptions will expire at the end of their current billing period."
|
|
216 |
+ |
hx-confirm="Pause your creator account? Your subscription will be canceled and no new sales can be made."
|
| 203 |
217 |
|
hx-on::after-request="if(event.detail.successful) window.location.reload()">
|
| 204 |
218 |
|
Pause Creator Account
|
| 205 |
219 |
|
</button>
|
| 208 |
222 |
|
|
| 209 |
223 |
|
<details class="form-section">
|
| 210 |
224 |
|
<summary><h2>Delete Account</h2></summary>
|
| 211 |
|
- |
<p class="muted" style="margin-bottom: 1rem; text-align: left;">
|
| 212 |
|
- |
Deleting your account is permanent. All your projects will remain accessible, but you won't be able to manage them.
|
|
225 |
+ |
<p class="muted" style="margin-bottom: 0.75rem; text-align: left;">
|
|
226 |
+ |
Permanently delete your account. This cannot be undone.
|
|
227 |
+ |
</p>
|
|
228 |
+ |
<p class="muted" style="margin-bottom: 1rem; text-align: left; font-size: 0.85rem; opacity: 0.6;">
|
|
229 |
+ |
Before deleting, consider <a href="/dashboard/export">exporting your data</a>.{% if can_create_projects && !creator_paused %} If you just want to stop paying, <strong>pause</strong> your account instead.{% endif %}
|
| 213 |
230 |
|
</p>
|
| 214 |
231 |
|
<button class="danger"
|
| 215 |
232 |
|
hx-delete="/api/users/me"
|