module Db2Session::Manager
Public Instance Methods
authenticate!() { || ... }
click to toggle source
# File lib/db2_session/manager.rb, line 15 def authenticate! Thread.current[:connection] = current_connection yield rescue Exception => e render json: { message: e.message }, status: :unauthorized ensure Thread.current[:connection] = nil end
create_new_connection()
click to toggle source
# File lib/db2_session/manager.rb, line 24 def create_new_connection new_session_connection.tap do |connection| sessions.fetch_or_store(connection.object_id, connection) end end
db2_config()
click to toggle source
# File lib/db2_session/manager.rb, line 11 def db2_config Db2Query::Base.config end
flush_idling_connections!()
click to toggle source
# File lib/db2_session/manager.rb, line 30 def flush_idling_connections! sessions.each_pair do |key, conn| sessions.delete_pair(key, conn) if idle_connection?(conn) end end
Private Instance Methods
current_connection()
click to toggle source
# File lib/db2_session/manager.rb, line 69 def current_connection sessions.fetch(request_key).tap do |conn| conn.trx_time = current_time end end
current_time()
click to toggle source
# File lib/db2_session/manager.rb, line 65 def current_time Process.clock_gettime(Process::CLOCK_MONOTONIC) end
decoded_token()
click to toggle source
# File lib/db2_session/manager.rb, line 49 def decoded_token JWT.decode request_token, hmac_secret, true, { algorithm: "HS256" } end
idle_connection?(conn)
click to toggle source
# File lib/db2_session/manager.rb, line 57 def idle_connection?(conn) current_time - conn.trx_time > 30 * 60 end
new_session_connection()
click to toggle source
# File lib/db2_session/manager.rb, line 61 def new_session_connection Db2Session::Connection.new(db2_config, params[:userid], params[:password]) end
payload(key)
click to toggle source
# File lib/db2_session/manager.rb, line 37 def payload(key) { data: { session_key: key } } end
request_key()
click to toggle source
# File lib/db2_session/manager.rb, line 53 def request_key decoded_token.first["data"].transform_keys(&:to_sym)[:session_key] end
request_token()
click to toggle source
# File lib/db2_session/manager.rb, line 45 def request_token request.authorization.split(" ").last end
token(key)
click to toggle source
# File lib/db2_session/manager.rb, line 41 def token(key) JWT.encode payload(key), hmac_secret, "HS256" end