2019-09-11 05:55:35 -04:00
|
|
|
# frozen_string_literal: true
|
2019-09-11 05:27:24 -04:00
|
|
|
|
2019-12-02 02:58:14 -05:00
|
|
|
# name: discourse-subscriptions
|
|
|
|
# about: Integrates Stripe into Discourse to allow visitors to subscribe
|
2020-03-21 05:35:05 -04:00
|
|
|
# version: 2.8.1
|
2020-04-29 06:57:17 -04:00
|
|
|
# url: https://github.com/discourse/discourse-subscriptions
|
2020-05-22 12:20:05 -04:00
|
|
|
# authors: Rimian Perkins, Justin DiRose
|
2022-03-06 18:20:03 -05:00
|
|
|
# transpile_js: true
|
2017-01-30 21:28:41 -05:00
|
|
|
|
2019-12-03 19:53:05 -05:00
|
|
|
enabled_site_setting :discourse_subscriptions_enabled
|
2017-01-31 19:35:21 -05:00
|
|
|
|
2021-01-06 14:36:50 -05:00
|
|
|
gem 'stripe', '5.29.0'
|
2019-09-11 05:18:30 -04:00
|
|
|
|
2019-12-02 19:51:18 -05:00
|
|
|
register_asset "stylesheets/common/main.scss"
|
|
|
|
register_asset "stylesheets/common/layout.scss"
|
2019-12-05 21:52:03 -05:00
|
|
|
register_asset "stylesheets/common/subscribe.scss"
|
2021-06-02 14:15:03 -04:00
|
|
|
register_asset "stylesheets/common/campaign.scss"
|
2019-12-02 19:51:18 -05:00
|
|
|
register_asset "stylesheets/mobile/main.scss"
|
2020-05-28 11:32:57 -04:00
|
|
|
register_svg_icon "far-credit-card" if respond_to?(:register_svg_icon)
|
2019-09-11 07:14:48 -04:00
|
|
|
|
2019-09-11 05:18:30 -04:00
|
|
|
register_html_builder('server:before-head-close') do
|
|
|
|
"<script src='https://js.stripe.com/v3/'></script>"
|
|
|
|
end
|
|
|
|
|
|
|
|
extend_content_security_policy(
|
2020-07-24 16:07:18 -04:00
|
|
|
script_src: ['https://js.stripe.com/v3/', 'https://hooks.stripe.com']
|
2019-09-11 05:18:30 -04:00
|
|
|
)
|
|
|
|
|
2019-12-03 17:29:13 -05:00
|
|
|
add_admin_route 'discourse_subscriptions.admin_navigation', 'discourse-subscriptions.products'
|
2019-09-13 22:56:28 -04:00
|
|
|
|
|
|
|
Discourse::Application.routes.append do
|
2020-07-22 12:06:34 -04: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
|
2021-01-13 12:47:22 -05:00
|
|
|
get '/admin/plugins/discourse-subscriptions/coupons' => 'admin/plugins#index', constraints: AdminConstraint.new
|
2019-10-24 23:00:59 -04:00
|
|
|
get 'u/:username/billing' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
|
2019-12-15 18:42:55 -05:00
|
|
|
get 'u/:username/billing/:id' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
|
2019-09-13 22:56:28 -04:00
|
|
|
end
|
|
|
|
|
2020-07-06 12:11:04 -04: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__)
|
|
|
|
|
2019-09-11 03:13:12 -04:00
|
|
|
after_initialize do
|
2021-01-06 14:36:50 -05:00
|
|
|
::Stripe.api_version = "2020-08-27"
|
2019-12-02 02:58:14 -05:00
|
|
|
|
|
|
|
::Stripe.set_app_info(
|
|
|
|
'Discourse Subscriptions',
|
2020-03-21 05:35:05 -04:00
|
|
|
version: '2.8.1',
|
2020-05-22 12:20:05 -04:00
|
|
|
url: 'https://github.com/discourse/discourse-subscriptions'
|
2019-12-02 02:58:14 -05:00
|
|
|
)
|
2019-09-11 07:14:48 -04:00
|
|
|
|
2019-09-11 04:32:09 -04:00
|
|
|
Discourse::Application.routes.append do
|
2019-12-03 19:23:45 -05:00
|
|
|
mount ::DiscourseSubscriptions::Engine, at: 's'
|
2019-09-11 04:32:09 -04:00
|
|
|
end
|
2021-07-15 16:05:27 -04: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))
|
|
|
|
rescue
|
|
|
|
false
|
|
|
|
end
|
|
|
|
end
|
2017-02-16 21:15:32 -05:00
|
|
|
end
|