Major additions: - Web UI: Jinja2 templates in FastAPI (login, dashboard, catalog, corporate memory, admin) - API: catalog profiles/metrics, telegram verify/unlink/status, admin table registry CRUD - Corporate memory governance: approve/reject/mandate/revoke/edit/batch + audit log - Sync: real DataSyncManager trigger, sync-settings, table-subscriptions - CLI: setup (init/test/deploy/verify), server (logs/restart/deploy/backup), explore - Instance config integration (instance.yaml loaded at startup) - 140 tests passing (25 new)
63 lines
2.1 KiB
HTML
63 lines
2.1 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Set Up Your Account - Data Analyst Portal{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="login-container">
|
|
<div class="login-card">
|
|
<h2>Set Up Your Account</h2>
|
|
<p class="login-description">
|
|
Create a password to complete your account setup.
|
|
</p>
|
|
|
|
<div class="account-email">
|
|
<strong>{{ email }}</strong>
|
|
</div>
|
|
|
|
<form method="POST" class="login-form">
|
|
<div class="form-group">
|
|
<label for="name">Your Name (optional)</label>
|
|
<input type="text"
|
|
id="name"
|
|
name="name"
|
|
value="{{ name|default('', true) }}"
|
|
placeholder="John Doe"
|
|
autocomplete="name">
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="password">Password</label>
|
|
<input type="password"
|
|
id="password"
|
|
name="password"
|
|
placeholder="Create a strong password"
|
|
required
|
|
autocomplete="new-password"
|
|
minlength="8">
|
|
<small class="form-hint">
|
|
At least 8 characters with uppercase, lowercase, and a number.
|
|
</small>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="confirm_password">Confirm Password</label>
|
|
<input type="password"
|
|
id="confirm_password"
|
|
name="confirm_password"
|
|
placeholder="Re-enter your password"
|
|
required
|
|
autocomplete="new-password"
|
|
minlength="8">
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary btn-block">Set Password</button>
|
|
</form>
|
|
|
|
<div class="login-links">
|
|
<a href="{{ url_for('password_auth.login_email') }}" class="btn btn-link">
|
|
Back to Login
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|