Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-21 17:00:29 +01:00
Add subscription check for API features
Dieser Commit ist enthalten in:
Ursprung
12cd8ac201
Commit
da7153fe34
5 geänderte Dateien mit 46 neuen und 2 gelöschten Zeilen
|
@ -20,6 +20,10 @@ class CustomWizard::AdminApiController < CustomWizard::AdminController
|
|||
raise Discourse::InvalidParameters, "An API with that name already exists: '#{current.title || current.name}'"
|
||||
end
|
||||
|
||||
unless subscription.includes?(:api, :all)
|
||||
raise Discourse::InvalidParameters, "Your subscription doesn't include API features."
|
||||
end
|
||||
|
||||
PluginStoreRow.transaction do
|
||||
CustomWizard::Api.set(api_params[:name], title: api_params[:title])
|
||||
|
||||
|
@ -130,4 +134,8 @@ class CustomWizard::AdminApiController < CustomWizard::AdminController
|
|||
|
||||
@auth_data ||= auth_data
|
||||
end
|
||||
|
||||
def subscription
|
||||
@subscription ||= CustomWizard::Subscription.new
|
||||
end
|
||||
end
|
||||
|
|
|
@ -87,6 +87,14 @@ class CustomWizard::Subscription
|
|||
business: ['*'],
|
||||
community: ['*']
|
||||
}
|
||||
},
|
||||
api: {
|
||||
all: {
|
||||
none: [],
|
||||
standard: [],
|
||||
business: ['*'],
|
||||
community: ['*']
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
@ -95,7 +103,7 @@ class CustomWizard::Subscription
|
|||
@subscription = find_subscription
|
||||
end
|
||||
|
||||
def includes?(feature, attribute, value)
|
||||
def includes?(feature, attribute, value = nil)
|
||||
attributes = self.class.attributes[feature]
|
||||
|
||||
## Attribute is not part of a subscription
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
# name: discourse-custom-wizard
|
||||
# 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
|
||||
# url: https://github.com/paviliondev/discourse-custom-wizard
|
||||
# contact_emails: development@pavilion.tech
|
||||
|
|
7
spec/fixtures/api/api.json
gevendort
Normale Datei
7
spec/fixtures/api/api.json
gevendort
Normale Datei
|
@ -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"
|
||||
}
|
21
spec/requests/custom_wizard/admin/api_controller_spec.rb
Normale Datei
21
spec/requests/custom_wizard/admin/api_controller_spec.rb
Normale Datei
|
@ -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
|
Laden …
In neuem Issue referenzieren