class Paasword
Public Class Methods
new(app)
click to toggle source
# File lib/paasword.rb, line 4 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/paasword.rb, line 8 def call(env) begin @req = Rack::Request.new(env) token = env['HTTP_X_AUTH_TOKEN'] appPrivateKey = ENV['PAASWORD_APP_PRIVATE_KEY'] if !token error("MISSING_ELEMENT", "x-auth-token") elsif !appPrivateKey error("MISSING_ELEMENT", "PAASWORD_APP_PRIVATE_KEY") else user = JWT.decode token, appPrivateKey, true user = user[0] if user && !user['AutoLogout']['IsEnabled'] loginTime = user['iat']; hoursSinceLogin = ((Time.now.to_i - loginTime)/3600).round; limit = user['AutoLogout']['LogoutEveryXHours'] if hoursSinceLogin > limit error("SESSION_EXPIRED", "") end end env['user'] = user status, headers, body = @app.call(env) [status, headers, body] end rescue Exception => ex error("INTERNAL_ERROR", ex.message) end end
error(errorType, errorMessage)
click to toggle source
# File lib/paasword.rb, line 41 def error(errorType, errorMessage) body = { "ErrorType" => errorType, "ErrorMessage" => errorMessage } [401, { 'Content-Type' => 'application/json; charset=utf-8' }, [ body.to_json ]] end