Add authentication improvements and search functionality

- Implement anonymous access control with ALLOW_ANONYMOUS_ACCESS env var
- Add complete password reset workflow with token-based validation
- Add username recovery functionality for better UX
- Implement full-text search API with relevance scoring and highlighting
- Add Docker compatibility improvements with permission handling and fallback storage
- Add quick stats API for real-time dashboard updates
- Improve security with proper token expiration and input validation
- Add search result pagination and navigation
- Enhance error handling and logging throughout the application

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-11 21:11:03 -05:00
parent 36bb905f99
commit 83dd85ffa3
8 changed files with 960 additions and 12 deletions

View File

@@ -0,0 +1,79 @@
{% extends "base.html" %}
{% block title %}Reset Password - BalanceBoard{% endblock %}
{% block content %}
<div class="auth-container">
<div class="auth-card">
<div class="auth-logo">
<img src="{{ url_for('serve_logo') }}" alt="BalanceBoard Logo">
<h1><span class="balance">balance</span>Board</h1>
<p style="color: var(--text-secondary); margin-top: 8px;">Reset your password</p>
</div>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<div class="flash-messages">
{% for category, message in messages %}
<div class="flash-message {{ category }}">{{ message }}</div>
{% endfor %}
</div>
{% endif %}
{% endwith %}
<form method="POST" class="auth-form">
<div class="form-group">
<label for="email">Email Address</label>
<input type="email" id="email" name="email" required
placeholder="Enter your registered email address"
value="{{ request.form.email or '' }}">
<small class="form-help">
We'll send you instructions to reset your password.
</small>
</div>
<button type="submit" class="btn btn-primary btn-block">
Send Reset Instructions
</button>
</form>
<div class="auth-footer">
<p>Remember your password? <a href="{{ url_for('login') }}">Back to login</a></p>
</div>
</div>
</div>
<style>
.form-help {
display: block;
margin-top: 4px;
font-size: 0.875rem;
color: var(--text-secondary);
}
.btn {
padding: 12px 24px;
border: none;
border-radius: 8px;
font-size: 1rem;
font-weight: 500;
cursor: pointer;
transition: all 0.2s ease;
}
.btn-primary {
background: var(--primary-color, #4db6ac);
color: white;
}
.btn-primary:hover {
background: var(--primary-dark, #26a69a);
transform: translateY(-1px);
}
.btn-block {
width: 100%;
margin-top: 16px;
}
</style>
{% endblock %}