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:
28
app.py
28
app.py
@@ -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,18 +277,23 @@ def index():
|
|||||||
|
|
||||||
return render_template('dashboard.html', user_settings=user_settings)
|
return render_template('dashboard.html', user_settings=user_settings)
|
||||||
else:
|
else:
|
||||||
# Anonymous mode - allow browsing with default settings
|
# Check if anonymous access is allowed
|
||||||
user_settings = {
|
if app.config.get('ALLOW_ANONYMOUS_ACCESS', False):
|
||||||
'filter_set': 'no_filter',
|
# Anonymous mode - allow browsing with default settings
|
||||||
'communities': [],
|
user_settings = {
|
||||||
'experience': {
|
'filter_set': 'no_filter',
|
||||||
'infinite_scroll': False,
|
'communities': [],
|
||||||
'auto_refresh': False,
|
'experience': {
|
||||||
'push_notifications': False,
|
'infinite_scroll': False,
|
||||||
'dark_patterns_opt_in': False
|
'auto_refresh': False,
|
||||||
|
'push_notifications': False,
|
||||||
|
'dark_patterns_opt_in': False
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
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>')
|
||||||
|
|||||||
@@ -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:-}
|
||||||
|
|||||||
@@ -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.profile_picture_url %}
|
{% if current_user.is_authenticated %}
|
||||||
<img src="{{ current_user.profile_picture_url }}" alt="Avatar">
|
{% if current_user.profile_picture_url %}
|
||||||
|
<img src="{{ current_user.profile_picture_url }}" alt="Avatar">
|
||||||
|
{% else %}
|
||||||
|
<div class="avatar-placeholder">{{ current_user.username[:2].upper() }}</div>
|
||||||
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="avatar-placeholder">{{ current_user.username[:2].upper() }}</div>
|
<div class="avatar-placeholder">?</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<span class="username">{{ current_user.username }}</span>
|
{% if current_user.is_authenticated %}
|
||||||
|
<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>
|
||||||
|
|||||||
@@ -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!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user