0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-09 20:02:54 +01:00

Add subscription check for API features

Dieser Commit ist enthalten in:
Angus McLeod 2022-11-01 13:38:56 +01:00
Ursprung 12cd8ac201
Commit da7153fe34
5 geänderte Dateien mit 46 neuen und 2 gelöschten Zeilen

Datei anzeigen

@ -20,6 +20,10 @@ class CustomWizard::AdminApiController < CustomWizard::AdminController
raise Discourse::InvalidParameters, "An API with that name already exists: '#{current.title || current.name}'" raise Discourse::InvalidParameters, "An API with that name already exists: '#{current.title || current.name}'"
end end
unless subscription.includes?(:api, :all)
raise Discourse::InvalidParameters, "Your subscription doesn't include API features."
end
PluginStoreRow.transaction do PluginStoreRow.transaction do
CustomWizard::Api.set(api_params[:name], title: api_params[:title]) CustomWizard::Api.set(api_params[:name], title: api_params[:title])
@ -130,4 +134,8 @@ class CustomWizard::AdminApiController < CustomWizard::AdminController
@auth_data ||= auth_data @auth_data ||= auth_data
end end
def subscription
@subscription ||= CustomWizard::Subscription.new
end
end end

Datei anzeigen

@ -87,6 +87,14 @@ class CustomWizard::Subscription
business: ['*'], business: ['*'],
community: ['*'] community: ['*']
} }
},
api: {
all: {
none: [],
standard: [],
business: ['*'],
community: ['*']
}
} }
} }
end end
@ -95,7 +103,7 @@ class CustomWizard::Subscription
@subscription = find_subscription @subscription = find_subscription
end end
def includes?(feature, attribute, value) def includes?(feature, attribute, value = nil)
attributes = self.class.attributes[feature] attributes = self.class.attributes[feature]
## Attribute is not part of a subscription ## Attribute is not part of a subscription

Datei anzeigen

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
# name: discourse-custom-wizard # name: discourse-custom-wizard
# about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more. # about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more.
# version: 2.0.6 # version: 2.0.7
# authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever # authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever
# url: https://github.com/paviliondev/discourse-custom-wizard # url: https://github.com/paviliondev/discourse-custom-wizard
# contact_emails: development@pavilion.tech # contact_emails: development@pavilion.tech

7
spec/fixtures/api/api.json gevendort Normale Datei
Datei anzeigen

@ -0,0 +1,7 @@
{
"name": "my_api",
"title": "My API",
"auth_type": "none",
"endpoints": "[{\"name\":\"my_endpoint\",\"url\":\"https://endpoint.com\",\"method\":\"POST\",\"content_type\":\"application/json\",\"success_codes\":[200]}]",
"new": "true"
}

Datei anzeigen

@ -0,0 +1,21 @@
# frozen_string_literal: true
describe CustomWizard::AdminApiController do
fab!(:admin_user) { Fabricate(:user, admin: true) }
let(:api_json) { get_wizard_fixture("api/api") }
before do
sign_in(admin_user)
end
it "does not save if user does not have relevant subscription" do
put "/admin/wizards/api/:name.json", params: api_json.to_h
expect(response.status).to eq(400)
end
it "saves when user does have relevant subscription" do
enable_subscription("business")
put "/admin/wizards/api/:name.json", params: api_json.to_h
expect(response.status).to eq(200)
end
end