auth für user
This commit is contained in:
80
app/web/templates/account/detail.html
Normal file
80
app/web/templates/account/detail.html
Normal file
@@ -0,0 +1,80 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}My Account - MyWhoosh Garmin Sync{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{{ user.name }}</h1>
|
||||
<div class="page-actions">
|
||||
<a class="btn secondary" href="/account/edit">Edit</a>
|
||||
<form method="post" action="/account/sync" class="inline-form">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
||||
<button type="submit">Sync now</button>
|
||||
</form>
|
||||
<form method="post" action="/account-logout" class="inline-form">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
||||
<button type="submit" class="secondary">Log out</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<dl class="info-grid">
|
||||
<dt>Status</dt>
|
||||
<dd><span class="badge badge-{{ user.health_state.value }}">{{ user.health_state.value.replace("_", " ") }}</span></dd>
|
||||
|
||||
<dt>MyWhoosh state</dt>
|
||||
<dd>{{ user.mywhoosh_state }}</dd>
|
||||
|
||||
<dt>Garmin state</dt>
|
||||
<dd>{{ user.garmin_state }}</dd>
|
||||
|
||||
<dt>Action reason</dt>
|
||||
<dd>{{ user.action_reason or "-" }}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
{% if user.action_reason == "mywhoosh_device_conflict" %}
|
||||
<h2>MyWhoosh device conflict</h2>
|
||||
<div class="card">
|
||||
<p>MyWhoosh reports this account is already logged in on another device. Log out of MyWhoosh there (app or website), then retry the sync.</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<h2>Recent sync runs</h2>
|
||||
<div class="card">
|
||||
{% if recent_runs %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Started</th>
|
||||
<th>Finished</th>
|
||||
<th>Status</th>
|
||||
<th>Discovered</th>
|
||||
<th>Imported</th>
|
||||
<th>Skipped</th>
|
||||
<th>Failed</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for run in recent_runs %}
|
||||
<tr>
|
||||
<td>{{ run.started_at }}</td>
|
||||
<td>{{ run.finished_at or "-" }}</td>
|
||||
<td><span class="badge badge-{{ run.status.value }}">{{ run.status.value }}</span></td>
|
||||
<td>{{ run.discovered_count }}</td>
|
||||
<td>{{ run.imported_count }}</td>
|
||||
<td>{{ run.skipped_count }}</td>
|
||||
<td>{{ run.failed_count }}</td>
|
||||
</tr>
|
||||
{% if run.summary_error %}
|
||||
<tr>
|
||||
<td colspan="7" class="summary-error">{{ run.summary_error }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p class="empty-state">No sync runs yet.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
39
app/web/templates/account/form.html
Normal file
39
app/web/templates/account/form.html
Normal file
@@ -0,0 +1,39 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Edit My Account - MyWhoosh Garmin Sync{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Edit My Account</h1>
|
||||
<div class="card">
|
||||
<form method="post" action="/account/edit" class="stacked-form">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
||||
|
||||
<label for="mywhoosh_email">MyWhoosh Email</label>
|
||||
<input type="email" id="mywhoosh_email" name="mywhoosh_email" value="{{ mywhoosh_email }}" required>
|
||||
|
||||
<label for="mywhoosh_password">MyWhoosh Password</label>
|
||||
<input type="password" id="mywhoosh_password" name="mywhoosh_password" autocomplete="new-password">
|
||||
<p class="hint">Leave blank to keep the existing password.</p>
|
||||
|
||||
<label for="garmin_email">Garmin Email</label>
|
||||
<input type="email" id="garmin_email" name="garmin_email" value="{{ garmin_email }}" required>
|
||||
|
||||
<label for="garmin_password">Garmin Password</label>
|
||||
<input type="password" id="garmin_password" name="garmin_password" autocomplete="new-password">
|
||||
<p class="hint">Leave blank to keep the existing password.</p>
|
||||
|
||||
<label for="notify_email_enabled">
|
||||
<input type="checkbox" id="notify_email_enabled" name="notify_email_enabled"
|
||||
{% if user.notify_email_enabled %}checked{% endif %}>
|
||||
Email me when this account needs attention
|
||||
</label>
|
||||
|
||||
<label for="notification_email">Notification email</label>
|
||||
<input type="email" id="notification_email" name="notification_email"
|
||||
value="{{ user.notification_email or '' }}">
|
||||
|
||||
<button type="submit">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
<p><a href="/account">Back to my account</a></p>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user