class OmniAuth::Strategies::Scalus
Constants
- CODE_EXPIRES_AFTER
- DEFAULT_SCOPE
Available scopes: content themes products customers orders script_tags shipping read_* or write_*
- MINUTE
Public Class Methods
encoded_params_for_signature(params)
click to toggle source
# File lib/omniauth/strategies/scalus.rb, line 45 def self.encoded_params_for_signature(params) params = params.dup params.delete('hmac') params.delete('signature') # deprecated signature params.map{|k,v| "#{URI.escape(k.to_s, '&=%')}=#{URI.escape(v.to_s, '&%')}"}.sort.join('&') end
hmac_sign(encoded_params, secret)
click to toggle source
# File lib/omniauth/strategies/scalus.rb, line 52 def self.hmac_sign(encoded_params, secret) OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA256.new, secret, encoded_params) end
Public Instance Methods
callback_phase()
click to toggle source
Calls superclass method
# File lib/omniauth/strategies/scalus.rb, line 73 def callback_phase return fail!(:invalid_site) unless valid_site? return fail!(:invalid_signature) unless valid_signature? super end
callback_url()
click to toggle source
# File lib/omniauth/strategies/scalus.rb, line 85 def callback_url options[:callback_url] || full_host + script_name + callback_path end
fix_https()
click to toggle source
# File lib/omniauth/strategies/scalus.rb, line 56 def fix_https options[:client_options][:site].gsub!(/\Ahttp\:/, 'https:') end
request_phase()
click to toggle source
Calls superclass method
# File lib/omniauth/strategies/scalus.rb, line 65 def request_phase if valid_site? super else fail!(:invalid_site) end end
setup_phase()
click to toggle source
Calls superclass method
# File lib/omniauth/strategies/scalus.rb, line 60 def setup_phase super fix_https end
valid_signature?()
click to toggle source
# File lib/omniauth/strategies/scalus.rb, line 31 def valid_signature? return false unless request.POST.empty? params = request.GET signature = params['hmac'] timestamp = params['timestamp'] return false unless signature && timestamp return false unless timestamp.to_i > Time.now.to_i - CODE_EXPIRES_AFTER calculated_signature = self.class.hmac_sign(self.class.encoded_params_for_signature(params), options.client_secret) Rack::Utils.secure_compare(calculated_signature, signature) end
valid_site?()
click to toggle source
# File lib/omniauth/strategies/scalus.rb, line 27 def valid_site? !!(/\A(https|http)\:\/\/[a-zA-Z0-9][a-zA-Z0-9\-]*\.#{Regexp.quote(options[:scalus_domain])}[\/]?\z/ =~ options[:client_options][:site]) end