Fix anonymous access 500 error and add environment variable control

- Fixed dashboard.html template error accessing current_user.username for anonymous users
- Added ALLOW_ANONYMOUS_ACCESS environment variable with default true
- Enhanced index route logic to properly check config before allowing anonymous access
- Added proper environment variable to docker-compose.yml
- Anonymous access now works without 500 server errors

Fixes issue #2 completely - anonymous access is now functional

🤖 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:44:13 -05:00
parent c7bd634ad6
commit 236ec2abbe
4 changed files with 34 additions and 15 deletions

6
app.py
View File

@@ -42,6 +42,7 @@ app = Flask(__name__,
template_folder='templates') template_folder='templates')
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'dev-secret-key-change-in-production') app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'dev-secret-key-change-in-production')
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB max file size app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB max file size
app.config['ALLOW_ANONYMOUS_ACCESS'] = os.getenv('ALLOW_ANONYMOUS_ACCESS', 'true').lower() == 'true'
# Auth0 Configuration # Auth0 Configuration
app.config['AUTH0_DOMAIN'] = os.getenv('AUTH0_DOMAIN', '') app.config['AUTH0_DOMAIN'] = os.getenv('AUTH0_DOMAIN', '')
@@ -276,6 +277,8 @@ def index():
return render_template('dashboard.html', user_settings=user_settings) return render_template('dashboard.html', user_settings=user_settings)
else: else:
# Check if anonymous access is allowed
if app.config.get('ALLOW_ANONYMOUS_ACCESS', False):
# Anonymous mode - allow browsing with default settings # Anonymous mode - allow browsing with default settings
user_settings = { user_settings = {
'filter_set': 'no_filter', 'filter_set': 'no_filter',
@@ -288,6 +291,9 @@ def index():
} }
} }
return render_template('dashboard.html', user_settings=user_settings, anonymous=True) return render_template('dashboard.html', user_settings=user_settings, anonymous=True)
else:
# Redirect non-authenticated users to login
return redirect(url_for('login'))
@app.route('/feed/<filterset>') @app.route('/feed/<filterset>')

View File

@@ -40,6 +40,7 @@ services:
FLASK_ENV: production FLASK_ENV: production
DEBUG: "False" DEBUG: "False"
SECRET_KEY: ${SECRET_KEY:-change-this-secret-key-in-production} SECRET_KEY: ${SECRET_KEY:-change-this-secret-key-in-production}
ALLOW_ANONYMOUS_ACCESS: ${ALLOW_ANONYMOUS_ACCESS:-true}
# Auth0 configuration (optional) # Auth0 configuration (optional)
AUTH0_DOMAIN: ${AUTH0_DOMAIN:-} AUTH0_DOMAIN: ${AUTH0_DOMAIN:-}

View File

@@ -30,13 +30,21 @@
<div class="user-menu"> <div class="user-menu">
<div class="user-info"> <div class="user-info">
<div class="user-avatar"> <div class="user-avatar">
{% if current_user.is_authenticated %}
{% if current_user.profile_picture_url %} {% if current_user.profile_picture_url %}
<img src="{{ current_user.profile_picture_url }}" alt="Avatar"> <img src="{{ current_user.profile_picture_url }}" alt="Avatar">
{% else %} {% else %}
<div class="avatar-placeholder">{{ current_user.username[:2].upper() }}</div> <div class="avatar-placeholder">{{ current_user.username[:2].upper() }}</div>
{% endif %} {% endif %}
{% else %}
<div class="avatar-placeholder">?</div>
{% endif %}
</div> </div>
{% if current_user.is_authenticated %}
<span class="username">{{ current_user.username }}</span> <span class="username">{{ current_user.username }}</span>
{% else %}
<span class="username">Anonymous User</span>
{% endif %}
</div> </div>
<div class="user-dropdown"> <div class="user-dropdown">
<a href="{{ url_for('settings') }}" class="dropdown-item">⚙️ Settings</a> <a href="{{ url_for('settings') }}" class="dropdown-item">⚙️ Settings</a>

View File

@@ -654,6 +654,10 @@ function sharePost() {
} }
function savePost() { function savePost() {
// TODO: Implement save post functionality
// User can save posts to their profile for later viewing
// This needs database backend integration with user_saved_posts table
// Same implementation needed as dashboard.html savePost function
alert('Save functionality coming soon!'); alert('Save functionality coming soon!');
} }