Sha256: b0c67ed0089c692e85135259cee029432ca38c62e244657a2667e405404f4cd7

Contents?: true

Size: 722 Bytes

Versions: 2

Compression:

Stored size: 722 Bytes

Contents

module Jobshop
  class AuthorizationService
    attr_reader :headers

    def initialize(headers = {})
      @headers = headers
    end

    def perform
      { user: user }
    end

    private def user
      @user ||= Jobshop::User.find(decoded_auth_token[:user_id]) if decoded_auth_token
    rescue ActiveRecord::RecordNotFound => e
      raise(AuthorizationHandler::TokenInvalid, e.message)
    end

    private def decoded_auth_token
      @decoded_auth_token ||= JWTService.decode(http_auth_header)
    end

    private def http_auth_header
      if headers["Authorization"].present?
        return headers["Authorization"].split(" ").last
      end
      raise(AuthorizationHandler::TokenMissing)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jobshop-0.0.163 app/services/jobshop/authorization_service.rb
jobshop-0.0.157 app/services/jobshop/authorization_service.rb