Sha256: c9f11853202f587d80cac8c742b521865a2506b8f012923f7b4f028771804154

Contents?: true

Size: 1.98 KB

Versions: 14

Compression:

Stored size: 1.98 KB

Contents

# frozen_string_literal: true

module DiscourseSubscriptionClient
  class SuppliersController < AdminController
    before_action :ensure_can_manage_suppliers
    skip_before_action :check_xhr, :preload_json, :verify_authenticity_token, only: %i[authorize authorize_callback]
    before_action :find_supplier, only: %i[authorize destroy]

    def index
      render_serialized(SubscriptionClientSupplier.all, SupplierSerializer, root: "suppliers")
    end

    def authorize
      request_id = DiscourseSubscriptionClient::Authorization.request_id(@supplier.id)
      cookies[:user_api_request_id] = request_id
      redirect_to DiscourseSubscriptionClient::Authorization.url(current_user, @supplier, request_id).to_s,
                  allow_other_host: true
    end

    def authorize_callback
      payload = params[:payload]
      request_id = cookies[:user_api_request_id]
      supplier_id = request_id.split("-").first

      data = DiscourseSubscriptionClient::Authorization.process_response(request_id, payload)
      raise Discourse::InvalidParameters, :payload unless data

      supplier = SubscriptionClientSupplier.find(supplier_id)
      raise Discourse::InvalidParameters, :supplier_id unless supplier

      supplier.update(
        api_key: data[:key],
        user_id: data[:user_id],
        authorized_at: DateTime.now.iso8601(3)
      )

      DiscourseSubscriptionClient::Subscriptions.update

      redirect_to "/admin/plugins/subscription-client/subscriptions"
    end

    def destroy
      if @supplier.destroy_authorization
        render json: success_json.merge(supplier: @supplier.reload)
      else
        render json: failed_json
      end
    end

    protected

    def find_supplier
      params.require(:supplier_id)
      @supplier = SubscriptionClientSupplier.find(params[:supplier_id])
      raise Discourse::InvalidParameters, :supplier_id unless @supplier
    end

    def ensure_can_manage_suppliers
      Guardian.new(current_user).ensure_can_manage_suppliers!
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
discourse_subscription_client-0.1.0.pre14 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre13 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre12 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre11 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre10 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre9 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre8 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre7 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre6 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre5 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre4 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre3 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre2 app/controllers/discourse_subscription_client/suppliers_controller.rb
discourse_subscription_client-0.1.0.pre1 app/controllers/discourse_subscription_client/suppliers_controller.rb