class EME::AdminUser::RequiredLogin
Public Class Methods
new(app)
click to toggle source
# File lib/eme/admin_user/required_login.rb, line 3 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/eme/admin_user/required_login.rb, line 7 def call(env) req = Rack::Request.new(env) # whitelist check/assets if(["/assets/", "/images/"].include?(req.path[0..7]) || (EME::AdminUser.settings[:white_list_paths] && EME::AdminUser.settings[:white_list_paths].include?(req.path))) return @app.call(env) end cookies = req.cookies session = req.session good = false ip = req.ip if session[:admin_session_key] heartbeat = EME::AdminUser.heartbeat(session[:admin_session_key]) if heartbeat["logged_in"] == true data = EME::AdminUser.me(session[:admin_session_key]) data_permissions = data.delete(:permissions) puts "PERMISSIONS + #{data_permissions}" permissions = EME::AdminUser.all_permissions(session[:admin_session_key]) if session[:admin_user_info].nil? || heartbeat["permissions"] != "uptodate" session[:admin_user_info] = EME::AdminUser.me(session[:admin_session_key]) end good = true end end if !good && (req.path != EME::AdminUser.settings[:login_path]) return [302, {"Location" => req.base_url + EME::AdminUser.settings[:login_path] }, []] end @status, @headers, @response = @app.call(env) if req.cookies["admin_session_key"].nil? && !session[:admin_session_key].nil? Rack::Utils.set_cookie_header!(@headers, "admin_session_key", {:value => EME::AdminUser.encode_admin_key_cookie(session[:admin_session_key], ip), :path => "/", :domain => ".enmasse.com", :expires => Time.now+86400}) end return [@status, @headers, @response] end