Class: AuthMiddleware
- Inherits:
-
Object
- Object
- AuthMiddleware
- Defined in:
- app/middleware/auth_middleware.rb
Constant Summary collapse
- MAX_SESSION_AGE =
Session expires after 8 hours of inactivity
60 * 60 * 8
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ AuthMiddleware
constructor
A new instance of AuthMiddleware.
Constructor Details
#initialize(app) ⇒ AuthMiddleware
Returns a new instance of AuthMiddleware.
5 6 7 |
# File 'app/middleware/auth_middleware.rb', line 5 def initialize(app) @app = app end |
Instance Method Details
#call(env) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/middleware/auth_middleware.rb', line 9 def call(env) # Debug: Check what session keys are available # puts "DEBUG KEYS: #{env.keys.select{|k| k.include?('session')}}" env['eks_cent.session'] ||= env['rack.session'] || {} session = env['eks_cent.session'] # Check for session expiry user_id = session['user_id'] || session[:user_id] last_active = session['last_active_at'] || session[:last_active_at] if user_id && last_active age = Time.now.to_i - last_active.to_i if age > MAX_SESSION_AGE # Clear session if expired ['user_id', :user_id, 'username', :username, 'last_active_at', :last_active_at].each { |k| session.delete(k) } if requires_auth?(env['PATH_INFO']) return [302, { 'Location' => '/login?reason=expired' }, []] end else # Update last active time to extend session (sliding expiration) session['last_active_at'] = Time.now.to_i end elsif user_id # If logged in but no last_active_at (legacy session), set it now session['last_active_at'] = Time.now.to_i end # If the route requires authentication and user is not logged in logged_in = session['user_id'] || session[:user_id] || session['username'] || session[:username] if requires_auth?(env['PATH_INFO']) && !logged_in return [302, { 'Location' => '/login' }, []] end @app.call(env) end |