2019-09-11 19:55:35 +10:00
|
|
|
# frozen_string_literal: true
|
2019-09-11 19:27:24 +10:00
|
|
|
|
2019-12-02 18:58:14 +11:00
|
|
|
# name: discourse-subscriptions
|
|
|
|
# about: Integrates Stripe into Discourse to allow visitors to subscribe
|
2020-03-21 20:35:05 +11:00
|
|
|
# version: 2.8.1
|
2020-04-29 16:27:17 +05:30
|
|
|
# url: https://github.com/discourse/discourse-subscriptions
|
2020-05-22 11:20:05 -05:00
|
|
|
# authors: Rimian Perkins, Justin DiRose
|
2022-03-07 00:20:03 +01:00
|
|
|
# transpile_js: true
|
2017-01-31 13:28:41 +11:00
|
|
|
|
2019-12-04 11:53:05 +11:00
|
|
|
enabled_site_setting :discourse_subscriptions_enabled
|
2017-02-01 11:35:21 +11:00
|
|
|
|
2022-12-29 12:35:06 +00:00
|
|
|
gem "stripe", "5.29.0"
|
2019-09-11 19:18:30 +10:00
|
|
|
|
2019-12-03 11:51:18 +11:00
|
|
|
register_asset "stylesheets/common/main.scss"
|
|
|
|
register_asset "stylesheets/common/layout.scss"
|
2019-12-06 13:52:03 +11:00
|
|
|
register_asset "stylesheets/common/subscribe.scss"
|
2021-06-02 13:15:03 -05:00
|
|
|
register_asset "stylesheets/common/campaign.scss"
|
2019-12-03 11:51:18 +11:00
|
|
|
register_asset "stylesheets/mobile/main.scss"
|
2020-05-28 10:32:57 -05:00
|
|
|
register_svg_icon "far-credit-card" if respond_to?(:register_svg_icon)
|
2019-09-11 21:14:48 +10:00
|
|
|
|
2022-12-29 12:35:06 +00:00
|
|
|
register_html_builder("server:before-head-close") do
|
2019-09-11 19:18:30 +10:00
|
|
|
"<script src='https://js.stripe.com/v3/'></script>"
|
|
|
|
end
|
|
|
|
|
2022-12-29 12:35:06 +00:00
|
|
|
extend_content_security_policy(script_src: %w[https://js.stripe.com/v3/ https://hooks.stripe.com])
|
2019-09-11 19:18:30 +10:00
|
|
|
|
2022-12-29 12:35:06 +00:00
|
|
|
add_admin_route "discourse_subscriptions.admin_navigation", "discourse-subscriptions.products"
|
2019-09-14 12:56:28 +10:00
|
|
|
|
|
|
|
Discourse::Application.routes.append do
|
2022-12-29 12:35:06 +00:00
|
|
|
get "/admin/plugins/discourse-subscriptions" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/products" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/products/:product_id" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/products/:product_id/plans" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/products/:product_id/plans/:plan_id" =>
|
|
|
|
"admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/subscriptions" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/plans" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/plans/:plan_id" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "/admin/plugins/discourse-subscriptions/coupons" => "admin/plugins#index",
|
|
|
|
:constraints => AdminConstraint.new
|
|
|
|
get "u/:username/billing" => "users#show", :constraints => { username: USERNAME_ROUTE_FORMAT }
|
|
|
|
get "u/:username/billing/:id" => "users#show", :constraints => { username: USERNAME_ROUTE_FORMAT }
|
|
|
|
get "u/:username/billing/subscriptions/card/:subscription_id" => "users#show",
|
|
|
|
:constraints => {
|
|
|
|
username: USERNAME_ROUTE_FORMAT,
|
|
|
|
}
|
2019-09-14 12:56:28 +10:00
|
|
|
end
|
|
|
|
|
2022-12-29 12:35:06 +00:00
|
|
|
load File.expand_path("lib/discourse_subscriptions/engine.rb", __dir__)
|
|
|
|
load File.expand_path("app/controllers/concerns/stripe.rb", __dir__)
|
|
|
|
load File.expand_path("app/controllers/concerns/group.rb", __dir__)
|
2020-07-06 11:11:04 -05:00
|
|
|
|
2019-09-11 17:13:12 +10:00
|
|
|
after_initialize do
|
2021-01-06 13:36:50 -06:00
|
|
|
::Stripe.api_version = "2020-08-27"
|
2019-12-02 18:58:14 +11:00
|
|
|
|
|
|
|
::Stripe.set_app_info(
|
2022-12-29 12:35:06 +00:00
|
|
|
"Discourse Subscriptions",
|
|
|
|
version: "2.8.1",
|
|
|
|
url: "https://github.com/discourse/discourse-subscriptions",
|
2019-12-02 18:58:14 +11:00
|
|
|
)
|
2019-09-11 21:14:48 +10:00
|
|
|
|
2022-12-29 12:35:06 +00:00
|
|
|
Discourse::Application.routes.append { mount ::DiscourseSubscriptions::Engine, at: "s" }
|
2021-07-15 15:05:27 -05:00
|
|
|
|
|
|
|
add_to_serializer(:site, :show_campaign_banner) do
|
|
|
|
begin
|
|
|
|
enabled = SiteSetting.discourse_subscriptions_enabled
|
|
|
|
campaign_enabled = SiteSetting.discourse_subscriptions_campaign_enabled
|
|
|
|
goal_met = Discourse.redis.get("subscriptions_goal_met_date")
|
|
|
|
|
|
|
|
enabled && campaign_enabled && (!goal_met || 7.days.ago <= Date.parse(goal_met))
|
2022-12-29 12:35:06 +00:00
|
|
|
rescue StandardError
|
2021-07-15 15:05:27 -05:00
|
|
|
false
|
|
|
|
end
|
|
|
|
end
|
2017-02-17 13:15:32 +11:00
|
|
|
end
|