Sha256: 44dcad811620f04f4dbf0a61ba0564f387bca39db1cf446c3419f01a5593ea46

Contents?: true

Size: 1.14 KB

Versions: 5

Compression:

Stored size: 1.14 KB

Contents

module InfinumId
  module Api
    class WebhooksController < Api::BaseController
      def update_resource_callback
        return render_not_found unless resource

        resource.update(user_params)
        InfinumId::AfterResourceUpdate.call(resource, params[:user])

        render json: { resource_name.underscore => 'updated' }
      end

      def create_resource_callback
        return render_already_exists if resource

        resource = resource_class.create(user_params.merge(provider: params[:provider]))
        InfinumId::AfterResourceCreate.call(resource, params[:user])

        render json: { resource_name.underscore => 'created' }
      end

      private

      def user_params
        params.require(:user).permit(InfinumId.resource_attributes)
      end

      def resource
        @resource ||= resource_class.find_by(uid: user_params[:uid])
      end

      def render_not_found
        render json: { resource_name.underscore => 'not found' }, status: :not_found
      end

      def render_already_exists
        render json: { resource_name.underscore => 'already exists' }, status: :unprocessable_entity
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
infinum_id-1.5.1 app/controllers/infinum_id/api/webhooks_controller.rb
infinum_id-1.5.0 app/controllers/infinum_id/api/webhooks_controller.rb
infinum_id-1.4.2 app/controllers/infinum_id/api/webhooks_controller.rb
infinum_id-1.4.1 app/controllers/infinum_id/api/webhooks_controller.rb
infinum_id-1.4.0 app/controllers/infinum_id/api/webhooks_controller.rb