0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-12 21:22:54 +01:00
discourse-custom-wizard/lib/custom_wizard/pro.rb
2021-08-18 14:59:43 +08:00

106 Zeilen
Kein EOL
2,1 KiB
Ruby

# frozen_string_literal: true
class CustomWizard::Pro
attr_reader :authentication,
:subscription
def initialize
@authentication = CustomWizard::ProAuthentication.new
@subscription = CustomWizard::ProSubscription.new
end
def server
"test.thepavilion.io"
end
def subscription_type
"stripe"
end
def client_name
"custom-wizard"
end
def authorized?
@authentication.active?
end
def subscribed?
@subscription.active?
end
def update_subscription
if @authentication.active?
response = Excon.get(
"https://#{server}/subscription-server/user-subscriptions/#{subscription_type}/#{client_name}",
headers: {
"User-Api-Key" => @authentication.api_key
}
)
if response.status == 200
begin
data = JSON.parse(response.body).deep_symbolize_keys
rescue JSON::ParserError
return false
end
return @subscription.update(data)
end
end
@subscription.destroy
false
end
def destroy
@authentication.destroy
end
def auth_request(user_id, request_id)
keys = @authentication.generate_keys(user_id, request_id)
params = {
public_key: keys.public_key,
nonce: keys.nonce,
client_id: @authentication.client_id,
auth_redirect: "#{Discourse.base_url}/admin/wizards/pro/authorize/callback",
application_name: SiteSetting.title,
scopes: "discourse-subscription-server:user_subscription"
}
uri = URI.parse("https://#{server}/user-api-key/new")
uri.query = URI.encode_www_form(params)
uri.to_s
end
def auth_response(request_id, payload)
data = @authentication.decrypt_payload(request_id, payload)
return unless data.is_a?(Hash) && data[:key] && data[:user_id]
@authentication.update(data)
end
def self.update
self.new.update
end
def self.destroy
self.new.destroy
end
def self.generate_request
self.new.generate_request
end
def self.handle_response
self.new.handle_response
end
def self.subscribed?
self.new.subscribed?
end
def self.namespace
"custom_wizard_pro"
end
end