“shubhamdhamal” commited on
Commit
1a3e34b
·
1 Parent(s): 7362a57

Fix session config and add debug logging

Browse files
Files changed (2) hide show
  1. config.py +14 -20
  2. start.sh +12 -0
config.py CHANGED
@@ -9,11 +9,13 @@ if not os.environ.get('RENDER') and not os.environ.get('SPACE_ID'):
9
  # Set Flask app for CLI commands (needed for flask db upgrade)
10
  os.environ.setdefault('FLASK_APP', 'run.py')
11
 
12
- # Check if running in production (Render or HF Spaces)
13
- IS_PRODUCTION = os.environ.get('RENDER') or os.environ.get('SPACE_ID')
14
-
15
  class Config:
16
- SECRET_KEY = os.environ.get('FLASK_SECRET_KEY') or os.environ.get('SECRET_KEY') or 'dev-secret-key-change-in-production-2024'
 
 
 
 
 
17
  SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
18
  'sqlite:///' + os.path.join(basedir, 'instance', 'app.db')
19
  SQLALCHEMY_TRACK_MODIFICATIONS = False
@@ -21,25 +23,17 @@ class Config:
21
  # WTF CSRF Settings
22
  WTF_CSRF_ENABLED = True
23
  WTF_CSRF_TIME_LIMIT = 3600 # 1 hour token validity
24
- WTF_CSRF_SSL_STRICT = False # Allow CSRF over HTTP for development
25
 
26
- # Session configuration
27
  SESSION_COOKIE_HTTPONLY = True
28
- SESSION_COOKIE_SAMESITE = 'Lax' # Default for local development
29
  PERMANENT_SESSION_LIFETIME = 7200 # 2 hours
30
- SESSION_REFRESH_EACH_REQUEST = True # Refresh session on each request
31
- SESSION_USE_SIGNER = True # Sign session cookies for security
32
- SESSION_COOKIE_NAME = 'learning_path_session' # Custom session cookie name
33
 
34
- # Ensure cookies work with OAuth redirects in production
35
- if IS_PRODUCTION:
36
- SESSION_COOKIE_SECURE = True # Cookie only over HTTPS
37
- SESSION_COOKIE_SAMESITE = 'Lax' # Lax works better for same-site forms
38
- REMEMBER_COOKIE_SECURE = True
39
- REMEMBER_COOKIE_SAMESITE = 'Lax'
40
- else:
41
- # Local development - allow HTTP cookies
42
- SESSION_COOKIE_SECURE = False
43
- REMEMBER_COOKIE_SECURE = False
44
 
45
  LOG_TO_STDOUT = os.environ.get('LOG_TO_STDOUT')
 
9
  # Set Flask app for CLI commands (needed for flask db upgrade)
10
  os.environ.setdefault('FLASK_APP', 'run.py')
11
 
 
 
 
12
  class Config:
13
+ # Check if running in production (Render or HF Spaces)
14
+ IS_PRODUCTION = bool(os.environ.get('RENDER') or os.environ.get('SPACE_ID'))
15
+
16
+ # SECRET_KEY is CRITICAL for sessions and CSRF
17
+ SECRET_KEY = os.environ.get('SECRET_KEY') or os.environ.get('FLASK_SECRET_KEY') or 'dev-secret-key-change-in-production-2024'
18
+
19
  SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
20
  'sqlite:///' + os.path.join(basedir, 'instance', 'app.db')
21
  SQLALCHEMY_TRACK_MODIFICATIONS = False
 
23
  # WTF CSRF Settings
24
  WTF_CSRF_ENABLED = True
25
  WTF_CSRF_TIME_LIMIT = 3600 # 1 hour token validity
26
+ WTF_CSRF_SSL_STRICT = False # Don't require HTTPS for CSRF
27
 
28
+ # Session configuration - CRITICAL for CSRF to work
29
  SESSION_COOKIE_HTTPONLY = True
30
+ SESSION_COOKIE_SAMESITE = 'Lax'
31
  PERMANENT_SESSION_LIFETIME = 7200 # 2 hours
32
+ SESSION_COOKIE_NAME = 'learning_path_session'
 
 
33
 
34
+ # Production settings (HF Spaces uses HTTPS)
35
+ SESSION_COOKIE_SECURE = IS_PRODUCTION # True for HTTPS, False for HTTP
36
+ REMEMBER_COOKIE_SECURE = IS_PRODUCTION
37
+ REMEMBER_COOKIE_SAMESITE = 'Lax'
 
 
 
 
 
 
38
 
39
  LOG_TO_STDOUT = os.environ.get('LOG_TO_STDOUT')
start.sh CHANGED
@@ -6,11 +6,23 @@ echo "=== Starting AI Learning Path Generator ==="
6
  # Set Flask app for migrations
7
  export FLASK_APP=web_app:create_app
8
 
 
 
 
 
 
 
 
9
  # Initialize database if it doesn't exist
10
  echo "Initializing database..."
11
  python -c "
12
  from web_app import create_app
13
  from web_app.models import db
 
 
 
 
 
14
 
15
  app = create_app()
16
  with app.app_context():
 
6
  # Set Flask app for migrations
7
  export FLASK_APP=web_app:create_app
8
 
9
+ # Debug: Check if SECRET_KEY is set
10
+ if [ -z "$SECRET_KEY" ]; then
11
+ echo "WARNING: SECRET_KEY is not set! Sessions/CSRF will not work properly."
12
+ else
13
+ echo "SECRET_KEY is configured (length: ${#SECRET_KEY})"
14
+ fi
15
+
16
  # Initialize database if it doesn't exist
17
  echo "Initializing database..."
18
  python -c "
19
  from web_app import create_app
20
  from web_app.models import db
21
+ from config import Config
22
+
23
+ print(f'SECRET_KEY set: {bool(Config.SECRET_KEY)}')
24
+ print(f'IS_PRODUCTION: {Config.IS_PRODUCTION}')
25
+ print(f'SESSION_COOKIE_SECURE: {Config.SESSION_COOKIE_SECURE}')
26
 
27
  app = create_app()
28
  with app.app_context():