aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/lib/sso/from_discourse.rb13
1 files changed, 8 insertions, 5 deletions
diff --git a/app/lib/sso/from_discourse.rb b/app/lib/sso/from_discourse.rb
index 8c5eea7..7af7173 100644
--- a/app/lib/sso/from_discourse.rb
+++ b/app/lib/sso/from_discourse.rb
@@ -5,6 +5,8 @@
# frozen_string_literal: true
module SSO
+ class MissingSecretError < ArgumentError; end
+
class FromDiscourse
attr_accessor :nonce, :token
attr_reader :request_uri, :user_info, :status
@@ -91,17 +93,18 @@ module SSO
end
def mac_signature(payload = b64_payload)
- OpenSSL::HMAC.hexdigest('SHA256', self.class.config[:sso_secret], payload)
+ OpenSSL::HMAC.hexdigest('SHA256', sso_secret, payload)
end
def sso_secret
@sso_secret = begin
- self.class.config[:sso_secret].presence ||
- Rails.application.credentials.sso_secret ||
- raise
+ self.class.config[:sso_secret] ||
+ Rails.application.credentials.sso_secret
rescue MissingConstant
- raise("Missing SSO Secret! Please set `SSO::FromDiscourse.config[:sso_secret]`")
+ nil
end
+ raise SSO::MissingSecretError if @sso_secret.nil?
+ self.class.config[:sso_secret] ||= @sso_secret
end
end
end