Sha256: cfb309f5ea5ebc835da9312819c2093f54136e0c0203be7905f356e3600b83e0

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

module Sinatra

    module RequestWrapper

        def wrap_request(model, params, parent_attribute)

            authentication = Lanes::API::AuthenticationProvider.new(
              request_type: request.request_method,
              session:      session,
              params:       params
            )

            unless authentication.allowed_access_to?(model)
                halt( 401, Oj.dump({
                    success:false, errors: {user: "Access Denied"}, message: authentication.error_message
                }))
            end
            ::Lanes::User.scoped_to(authentication.current_user) do | user |
                Lanes.logger.debug "User   : #{user.id} (#{user.login})"
                Lanes.logger.debug "Params : #{request.params}"

                params[:nested_attribute] = Hash[ parent_attribute, params[parent_attribute] ] if parent_attribute

                wrap_json_reply do
                    yield authentication
                end

            end
        end

        def wrap_json_reply
            response = yield
            if false == response[:success]
                status(406)
            end
            Oj.dump(response, mode: :compat)
        end

    end


end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lanes-0.0.3 lib/lanes/api/request_wrapper.rb
lanes-0.0.2 lib/lanes/api/request_wrapper.rb
lanes-0.0.1 lib/lanes/api/request_wrapper.rb