Sha256: 1defeb1076ad945da60a8f7d3d54973a7190314393f318d3319f24513ce7b387

Contents?: true

Size: 1.05 KB

Versions: 15

Compression:

Stored size: 1.05 KB

Contents

module Ctws
  class AuthorizeApiRequest
    def initialize(headers = {})
      @headers = headers
    end

    # Service entry point - return valid user object
    def call
      {
        user: user
      }
    end

    private

    attr_reader :headers

    def user
      # check if user is in the database
      # memoize user object
      @user ||= Ctws.user_class.find(decoded_auth_token[:user_id]) if decoded_auth_token
      # handle user not found
    rescue ActiveRecord::RecordNotFound => e
      # raise custom error
      raise(
        ExceptionHandler::InvalidToken,
        ("#{Ctws::Message.invalid_token} #{e.message}")
      )
    end

    # decode authentication token
    def decoded_auth_token
      @decoded_auth_token ||= Ctws::JsonWebToken.decode(http_auth_header)
    end

    # check for token in `Authorization` header
    def http_auth_header
      if headers['Authorization'].present?
        return headers['Authorization'].split(' ').last
      end
        raise(ExceptionHandler::MissingToken, Ctws::Message.missing_token)
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ctws-0.3.0.beta app/auth/ctws/authorize_api_request.rb
ctws-0.2.3.beta app/auth/ctws/authorize_api_request.rb
ctws-0.2.2.beta app/auth/ctws/authorize_api_request.rb
ctws-0.2.1.beta app/auth/ctws/authorize_api_request.rb
ctws-0.2.0.beta app/auth/ctws/authorize_api_request.rb
ctws-0.1.14.beta app/auth/ctws/authorize_api_request.rb
ctws-0.1.13.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.12.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.11.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.10.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.9.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.8.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.7.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.6.alpha app/auth/ctws/authorize_api_request.rb
ctws-0.1.5.alpha app/auth/ctws/authorize_api_request.rb