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