intercom-rails 1.0.4 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a0dbbf87c42ebfc8d7ef419b8419c603affa9b404c60aa24fb08d9b97a4d497
4
- data.tar.gz: 4d651bdef674633a6f2ace4576a8450e97edfb176f05af5227676cebe1568c61
3
+ metadata.gz: 5c9335eca559ae32c3965cf1969443c0e20b65d29b81f1e5c6200d1d9e8d734c
4
+ data.tar.gz: 120b0878b7f09a4301c94c2c8dbc0c0376623a91e48948339482aafd203c9b99
5
5
  SHA512:
6
- metadata.gz: 736a52b2db369ed6e3716dbac46cd1b30b333644c7a248d45ebceeb2e2c0a7ffc2eb8bb7032c0ba6d931ec715b7356dbfc66f802239d0a437f4a477466c4c388
7
- data.tar.gz: d3dce65e7f52e5ca96104a65b63434fd2dff1bdd5652a533e2cd9dd13afb00c74d23153d2658ad01e4ba8b0dfb90d5bf5711c49265e94f56d5ff92222518a6fb
6
+ metadata.gz: f584dbf2f062e00f9b3d00b53a5cf8b9bef4406cf79f1afa5af805e106a7ef52402668a01f45f5302c04a15985d808651022d45be8b4af6ec8a52a571c12b7f9
7
+ data.tar.gz: cadbf3a8a2927260fc51131f688f8a5ae321af6d5d661db9688efa3c2bf2276608ae28264c0b535494610cac561f551151cdedaca4f78dae9b39f9f0bf1ec2d4
@@ -110,7 +110,6 @@ module IntercomRails
110
110
  config_accessor :hide_default_launcher
111
111
  config_accessor :api_base
112
112
  config_accessor :encrypted_mode
113
- config_accessor :jwt_enabled
114
113
 
115
114
  def self.api_key=(*)
116
115
  warn "Setting an Intercom API key is no longer supported; remove the `config.api_key = ...` line from config/initializers/intercom.rb"
@@ -144,6 +143,16 @@ module IntercomRails
144
143
  end
145
144
  end
146
145
 
146
+ config_group :jwt do
147
+ config_accessor :enabled
148
+ config_accessor :expiry
149
+ config_accessor :signed_user_fields do |value|
150
+ unless value.nil? || (value.kind_of?(Array) && value.all? { |v| v.kind_of?(Symbol) || v.kind_of?(String) })
151
+ raise ArgumentError, "jwt.signed_user_fields must be an array of symbols or strings"
152
+ end
153
+ end
154
+ end
155
+
147
156
  end
148
157
 
149
158
  end
@@ -18,7 +18,7 @@ module IntercomRails
18
18
  include ::ActionView::Helpers::TagHelper
19
19
 
20
20
  attr_reader :user_details, :company_details, :show_everywhere, :session_duration
21
- attr_accessor :secret, :widget_options, :controller, :nonce, :encrypted_mode_enabled, :encrypted_mode, :jwt_enabled
21
+ attr_accessor :secret, :widget_options, :controller, :nonce, :encrypted_mode_enabled, :encrypted_mode, :jwt_enabled, :jwt_expiry
22
22
 
23
23
  def initialize(options = {})
24
24
  self.secret = options[:secret] || Config.api_secret
@@ -26,7 +26,8 @@ module IntercomRails
26
26
  self.controller = options[:controller]
27
27
  @show_everywhere = options[:show_everywhere]
28
28
  @session_duration = session_duration_from_config
29
- self.jwt_enabled = options[:jwt_enabled] || Config.jwt_enabled
29
+ self.jwt_enabled = options[:jwt_enabled] || Config.jwt.enabled
30
+ self.jwt_expiry = options[:jwt_expiry] || Config.jwt.expiry
30
31
 
31
32
  initial_user_details = if options[:find_current_user_details]
32
33
  find_current_user_details
@@ -124,10 +125,19 @@ module IntercomRails
124
125
  def generate_jwt
125
126
  return nil unless user_details[:user_id].present?
126
127
 
127
- payload = {
128
- user_id: user_details[:user_id].to_s,
129
- exp: 24.hours.from_now.to_i
130
- }
128
+ payload = { user_id: user_details[:user_id].to_s }
129
+
130
+ if jwt_expiry
131
+ payload[:exp] = jwt_expiry.from_now.to_i
132
+ end
133
+
134
+ if Config.jwt.signed_user_fields.present?
135
+ Config.jwt.signed_user_fields.each do |field|
136
+ field = field.to_sym
137
+ payload[field] = user_details[field].to_s if user_details[field].present?
138
+ end
139
+ end
140
+
131
141
  JWT.encode(payload, secret, 'HS256')
132
142
  end
133
143
 
@@ -139,7 +149,11 @@ module IntercomRails
139
149
  if secret.present?
140
150
  if jwt_enabled && u[:user_id].present?
141
151
  u[:intercom_user_jwt] ||= generate_jwt
142
- u.delete(:user_id) # No need to send plaintext user_id when using JWT
152
+
153
+ u.delete(:user_id)
154
+ Config.jwt.signed_user_fields&.each do |field|
155
+ u.delete(field.to_sym)
156
+ end
143
157
  elsif (u[:user_id] || u[:email]).present?
144
158
  u[:user_hash] ||= user_hash
145
159
  end
@@ -1,3 +1,3 @@
1
1
  module IntercomRails
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intercom-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben McRedmond
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-12-19 00:00:00.000000000 Z
13
+ date: 2025-01-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport