Sha256: f6f285a352e8e2a1065f9088c6637b69444d93d789d2fe5ce9134f66ec46591d
Contents?: true
Size: 972 Bytes
Versions: 2
Compression:
Stored size: 972 Bytes
Contents
# frozen_string_literal: true class Api::AuthorizeRequestService def initialize(args) @authorization_header = args[:authorization_header] @resource_class = args[:resource_type].to_s.classify end def perform authorize_request! verify_author_resource author_resource end private attr_reader :authorization_header, :resource_class, :decoded_access_token, :author_resource def authorize_request! access_token = authorization_header.split.last @decoded_access_token = JsonWebToken.decode(access_token) raise JWT::DecodeError unless decoded_access_token[:resource_type] == resource_class end def verify_author_resource @author_resource = Class.const_get(resource_class).find_by id: decoded_access_token[:id] raise JWT::DecodeError unless author_resource raise JWT::DecodeError unless valid_device? end def valid_device? author_resource.devices.find_by(id: decoded_access_token[:device_id]) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
n_base_rails-0.1.2 | lib/services/api/authorize_request_service.rb |
n_base_rails-0.1.1 | lib/services/api/authorize_request_service.rb |