Justin DiRose fb4fac197b
REFACTOR: Use models to store data (#11)
* REFACTOR: Use api to add subscribe link

* FIX: I18n subscribe link

* REFACTOR: Use models to store some data

This enables the plugin to show only subscription information which was
generated on Discourse. Subscription data storage is limited to the
external identifiers Stripe generates so we can interact with the API.

* DEV: Test/linting fixes/rake task
2020-05-22 11:20:05 -05:00

79 lines
3.0 KiB
Ruby

# frozen_string_literal: true
# name: discourse-subscriptions
# about: Integrates Stripe into Discourse to allow visitors to subscribe
# version: 2.8.1
# url: https://github.com/discourse/discourse-subscriptions
# authors: Rimian Perkins, Justin DiRose
enabled_site_setting :discourse_subscriptions_enabled
gem 'stripe', '5.19.0'
register_asset "stylesheets/common/main.scss"
register_asset "stylesheets/common/layout.scss"
register_asset "stylesheets/common/subscribe.scss"
register_asset "stylesheets/mobile/main.scss"
register_svg_icon "credit-card" if respond_to?(:register_svg_icon)
register_html_builder('server:before-head-close') do
"<script src='https://js.stripe.com/v3/'></script>"
end
extend_content_security_policy(
script_src: ['https://js.stripe.com/v3/']
)
add_admin_route 'discourse_subscriptions.admin_navigation', 'discourse-subscriptions.products'
Discourse::Application.routes.append do
get '/admin/plugins/discourse-subscriptions' => 'admin/plugins#index'
get '/admin/plugins/discourse-subscriptions/products' => 'admin/plugins#index'
get '/admin/plugins/discourse-subscriptions/products/:product_id' => 'admin/plugins#index'
get '/admin/plugins/discourse-subscriptions/products/:product_id/plans' => 'admin/plugins#index'
get '/admin/plugins/discourse-subscriptions/products/:product_id/plans/:plan_id' => 'admin/plugins#index'
get '/admin/plugins/discourse-subscriptions/subscriptions' => 'admin/plugins#index'
get '/admin/plugins/discourse-subscriptions/plans' => 'admin/plugins#index'
get '/admin/plugins/discourse-subscriptions/plans/:plan_id' => 'admin/plugins#index'
get 'u/:username/billing' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
get 'u/:username/billing/:id' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
end
after_initialize do
::Stripe.api_version = "2019-12-03"
::Stripe.set_app_info(
'Discourse Subscriptions',
version: '2.8.1',
url: 'https://github.com/discourse/discourse-subscriptions'
)
[
"../lib/discourse_subscriptions/engine",
"../config/routes",
"../app/controllers/concerns/group",
"../app/controllers/concerns/stripe",
"../app/controllers/admin_controller",
"../app/controllers/admin/plans_controller",
"../app/controllers/admin/products_controller",
"../app/controllers/admin/subscriptions_controller",
"../app/controllers/user/payments_controller",
"../app/controllers/user/subscriptions_controller",
"../app/controllers/customers_controller",
"../app/controllers/hooks_controller",
"../app/controllers/invoices_controller",
"../app/controllers/plans_controller",
"../app/controllers/payments_controller",
"../app/controllers/products_controller",
"../app/controllers/subscriptions_controller",
"../app/models/customer",
"../app/models/product",
"../app/models/subscription",
"../app/serializers/payment_serializer",
].each { |path| require File.expand_path(path, __FILE__) }
Discourse::Application.routes.append do
mount ::DiscourseSubscriptions::Engine, at: 's'
end
end